y-matsui::weblog

電子楽器、音楽、コンピュータ、プログラミング、雑感。面倒くさいオヤジの独り言

VB,VBAでエクセルをコネコネしてたらエクセルが開放されない

今年度のお仕事で、他社が開発したVBプログラムを改修するお話があった。
VBVBAからエクセルをコネコネして、DBから引っ張ってきたレコードでグラフを書いたり、別シート保存したり、マージしたりとやりたい放題。
しかしこれがまた、結構面倒くさい問題を内包してて、たっぷり一週間を悶々と過ごしたのである。
エクセルのタスクを終了できない
消えないExcelのプロセス
結局はどこの行で暗黙のプロセス起動が起こっているかをしらみつぶし。
Exit Functionを1行づつ入れて、メモリ上にエクセルが残っていないかどうかをチェックする方法。
なんという情けないデバッグ方法(T_T;)
原因はと言えば、.ActiveSheetと記述されるべきところが、ActiveSheetになってて、別のエクセルプロセスが起動されちゃってたり、.SelectionのところがSelectionになってたり、Clipboard.clearっていう、オブジェクト指定のミス。「ん?青いか?」「青いんだろうな、たぶん」
原因が分かってしまえば、ハッピー。
しかしまぁ、改めて考えると凄い豪快なプログラムなんですコレ。
エクセルファイルを内部的に約1万ファイル、数ギガバイトも生成しちゃうんだから。一回処理が走り始めると、20時間程度は回り続け。
「働きモノだなぁ。落ちない方がエラいよ」って思っちゃう。