タイトル : Re^2: エクセルを2度目に起動するとエラーになってしまいます。 投稿日 : 2007/04/25(Wed) 11:30 投稿者 : take
ありがとうございました。 プログラムは、メインフォームでエクセル、CADを立ち上げ、処理別に作成した子フォームでエクセル、CADのイベント (Change,Click等)をひろいエクセル、CADに書き込みを行っています。 そのため、現在はメインフォームで起動したエクセル、CADを子フォームに渡して処理を行っています。 エクセルデータの検索処理の高速化を図りたかったため、DAOを使いデータの一部をメモリに読み込み、 その後にエクセルを起動しています。データが大きくなると、これら処理に時間がかかるため、 起動したエクセルを参照したままにしてあります。 それから、エクセルの変更をすぐにインデックスの変更に反映させたいため、 および、エクセルのセル内にフォーカスがあったり、エクセルのメニューを開いている状態で、 子フォームの処理をしようとするとエラーになってしまうため、エクセルの状態を常に監視しています。 また、データが多くなると、インデックスの書き換えに時間がかかるため、 エクセルを切り離して作業し、プログラムから再起動したり、エクセルを起動していることを忘れ、 別のブックを起動した際にはエクセルを切り離したり、ということも行っております。 お教えの方法だと、エクセルの終了でプロセスも解放され、2度目のエクセル起動も問題なく行えます。 しかし、エクセルを監視するため実行中は参照を保持したいので、解放が起動と違う場所になって しまいます。 ”WorkbookDeactivate”イベントではダメで、”WorkbookBeforeClose”でもダメでした。 どのように解放すれば2度目の起動がうまくいくのでしょうか。 実は、やってはいけないことと思いつつ、適当なタイミングでエクセルを”Kill”していました。 うまく解放されないエクセルは”Main title”が無いのでそれを見つけて”Kill”していました。 エクセル2000では不具合は感じなかったのですが、エクセル2003では、あるタイミングでメニューの”オートSUM” をクリックすると、不具合が発生します。 安易な方法にたより、大量に作りこんでしまいました。 天罰だと思います。 申し訳ありません、どうかよろしくお願いします。 |