VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2004/11/02(Tue) 13:41
投稿者魔界の仮面弁士
Eメール
URL
タイトルRe: Excel のタスクを正常に終了できない

たとえば、
  Set X1 = CreateObject("Excel.Application")
  Set X2 = CreateObject("Excel.Application")
のように、Excelを複数起動している状況を思い浮かべて見てください。

その場合、ActiveSheet などを使って、
> ActiveSheet.ChartObjects("グラフ 1").Activate
のようなコードを書いてしまうと、「どちらのExcel上のシートなのか」が、VBには判りませんよね。
Selectionでも同様です。「どのExcel上のどのブック上の選択範囲」なのかが曖昧になります。


Excel VBAの場合は、「自分自身」が持っているシートである事が明確なので、
上位のオブジェクト(ApplicationやWorkbookなど)の記述を省略できますが、
外部から制御する時は、省略できないのです。(Excelの起動数が1個であっても同様です)

上位オブジェクトの記述を省略しても、(参照設定を行っていれば)エラーにはなりませんが、
省略してしまうと、暗黙のうちに、Excelへの参照が内部で生成されてしまうため、
そのオブジェクトを、プログラムから解放できず、終了しない要因となります。


hhttp://www.bcap.co.jp/hanafusa/index.html の左側から、
[Excel & Word関係] を開き、先頭2項目にある
   『VBからExcel及びWordを操作する時の注意事項』
   『Excel のタスクを正常に終了できない現象』
を再読してみてください。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -