タイトル : エクセル起動終了について 投稿日 : 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 |