VB.NETでエクセル側でうまく終了するためには?

解決


  2006-07-05 21:28:13  No: 132214

前の関連ログ↓「オブジェクト開放処理がうまくいかない」
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200607/06070008.txt

こんにちは良です。いつもお世話になっております。環境はVB.NET2003 WinXPです。エクセル側の×ボタンで終了して(エクセル側で終了して)うまくCOMオブジェクトが
残らないようにしたいのですがその方法がよくわかっていません。

前のログで開放処理は
Excel を終了する
xlApplication.Quit()

をつけると全て開放できているんですが
これだとエクセル側で×ボタンで終了するとエラーが起こるんですよ。
×ボタンで終了してComオブジェクトのプロセスが全て
残らないようにはどうしたらよろしいですか?

前に特攻隊長まるるうさんが言ってました
WithEventsを調べてみたんですが自分の中で
納得いく回答が見つからなかったので
質問させていただきます。
WithEventsのうまい使い方がありましたら
すみませんがご教授のほうよろしくお願いいたします。


  2006-07-05 21:34:41  No: 132215

すみません。題名がかぶっていますね。

趣旨はWithEventsのうまい使いかたです。
よろしくお願いいたします。


  2006-07-05 23:06:59  No: 132216

こんにちは良です。すみません。回答が見つかりました。
後は見つけた回答を検証してみます。


  2006-07-05 23:09:24  No: 132217

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
で見つけました。


  2006-07-05 23:32:50  No: 132218

あとこちらも参照させていただきたいとおもいます。
http://www.bcap.co.jp/hanafusa/dotnet/App05.htm


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加