tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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”
をクリックすると、不具合が発生します。
安易な方法にたより、大量に作りこんでしまいました。
天罰だと思います。

申し訳ありません、どうかよろしくお願いします。

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

古いスレッドにレスはつけられません。