タイトル | : エクセル起動終了について |
記事No | : 7318 |
投稿日 | : 2008/04/11(Fri) 18:07 |
投稿者 | : take |
お世話になります。 VB2008ですがよろしいでしょうか?
フォームに1つのボタンを配置し、クリックによりエクセルを起動します。 いずれエクセルの色々なイベントを取得したいため、Applicationオブジェクトだけは保持させています。(Button1_Clickのところで解放すれば問題なく起動、終了できるのですが・・・。) エクセルを起動し、終了すると”呼び出しのターゲットが例外をスローしました。 Nothing”のエラーが出ます。メッセージボックスを閉じるとエクセルのプロセスは消えます。(xlappにNothingは設定されていませんが。) 次に再度エクセルを起動すると”呼び出しのターゲットが例外をスローしました。 Button1”のエラーが出てエクセルが起動できません。 ”xlapp = Nothing”の箇所をコメントアウトすると、一度目のエラーは出ずにエクセルのプロセスは消えるのですが、やはり二度目の起動ができません。xlappを見ると解放されていません。xlappにNothingが設定できれば再起動できると思うのですが。
下記がコードです。よろしくお願いします。
Public Class Form1
Private WithEvents xlapp As Excel.Application
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try xlapp = CreateObject("Excel.Application") Dim xlBooks As Excel.Workbooks = xlapp.Workbooks xlBooks.Add()
xlapp.Visible = True
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks) xlBooks = Nothing
Catch ex As Exception MsgBox(ex.Message & " Button1") End Try
End Sub
Private Sub xlapp_WorkbookBeforeClose(ByVal Wb As Excel.Workbook, ByRef Cancel As Boolean) Handles xlapp.WorkbookBeforeClose Try System.Runtime.InteropServices.Marshal.ReleaseComObject(xlapp) Catch ex As Exception MsgBox(ex.Message & " Release") End Try Try xlapp = Nothing Catch ex As Exception MsgBox(ex.Message & " Nothing") End Try End Sub
End Class
|