投稿日 | : 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 のタスクを正常に終了できない現象』
を再読してみてください。