前の関連ログ↓「オブジェクト開放処理がうまくいかない」
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200607/06070008.txt
こんにちは良です。いつもお世話になっております。環境はVB.NET2003 WinXPです。エクセル側の×ボタンで終了して(エクセル側で終了して)うまくCOMオブジェクトが
残らないようにしたいのですがその方法がよくわかっていません。
前のログで開放処理は
Excel を終了する
xlApplication.Quit()
をつけると全て開放できているんですが
これだとエクセル側で×ボタンで終了するとエラーが起こるんですよ。
×ボタンで終了してComオブジェクトのプロセスが全て
残らないようにはどうしたらよろしいですか?
前に特攻隊長まるるうさんが言ってました
WithEventsを調べてみたんですが自分の中で
納得いく回答が見つからなかったので
質問させていただきます。
WithEventsのうまい使い方がありましたら
すみませんがご教授のほうよろしくお願いいたします。
すみません。題名がかぶっていますね。
趣旨はWithEventsのうまい使いかたです。
よろしくお願いいたします。
こんにちは良です。すみません。回答が見つかりました。
後は見つけた回答を検証してみます。
Dim WithEvents xlapp As Excel.Application のように WithEvents キーワードを付けて定義し、後に次のようにイベントを処理します。
Private Sub xlapp_WorkbookBeforeClose(ByVal Wb As Excel.Workbook, Cancel As Boolean)
Dim result As VbMsgBoxResult
result = MsgBox("Allow WorkBook to be closed?", vbYesNo)
If result = vbNo Then
Cancel = True
End If
End Sub
という回答を
http://www.microsoft.com/japan/msdn/columns/askgui/askgui05222001.asp
で見つけました。
あとこちらも参照させていただきたいとおもいます。
http://www.bcap.co.jp/hanafusa/dotnet/App05.htm
ツイート | ![]() |