VisualBasic2008で、ボタンを押すとTest.xlsを開いて閉じるという簡単なプログラムを作成しています。
ワークブックのCloseとアプリケーションのQuitをしているのも関わらず
ボタンを押す度に、タスクマネージャに『EXCEL.EXE』が増え、消えない状態です。
フォームを閉じると『EXCEL.EXE』は消えるのですが、
フォームを閉じない状態で、『EXCEL.EXE』を消すことはできないのでしょうか?
以下、コードです。
-----------------------------------------------
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim AAA As Excel.Application
Dim BBB As Excel.Workbook
Dim CCC As Excel.Worksheet
AAA = CreateObject("Excel.Application")
BBB = XL.Workbooks.Open("C:\Work\Test")
CCC = XM.Worksheets(1)
CCC = Nothing
BBB.Close(SaveChanges:=False)
BBB = Nothing
AAA.Quit()
AAA = Nothing
End Sub
-----------------------------------------------
終了処理のコードが間違っていましたらご指摘ください。
わかる方いらっしゃいましたら、是非お願い致します。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
今晩は。
「開放」漏れについては様々な要因がありますので(宣言方法・開放順序・開放コードの種類、その他特別なコーディング下で発生)、
それらを1個づつ指摘されて、次にまたコード追加する度に何故か開放できない、と
ずっと苦労し続けるよりは、まずお手本コードに従って一気に「矯正」してしまう方が
今後楽ですし、理解も早いです。
まず、宣言方法を少しミスるだけでも環境によっては突然開放できなくなりますので
http://www.hanatyan.sakura.ne.jp/
の、VB2005関係専用→Excel・Word・他(30) に書いてくださっているコードに
すべて直してみてください。MRComObjectで都度開放してください。
Close・Quitまで、このページを参考にさせていただく形が良いです。
(以前、Excelを扱うソフトで4万行以上のコードを書いたことがありますが、
このサイトの宣言・開放コードですべて開放できました^^)
→次にこの状態で
AAA = Nothing
MsgBox("終了")
End Sub
としてButton1を押し、正常に開放されていればMsgBox表示中にタスクマネージャ上から
Excel.exeが消えます。
→消えていなければ開放漏れがどこかに潜んでいますので、不要なコードを全て消して
Excel.exeが消える事を確認。
たまに、MsgBoxを「閉じれば」Excelが消える、といった現象が現れますが、
「正常開放された」と誤認識させられやすいです。MsgBox「表示中」に消えるのが正常です。
注意するのが、開放ミスしているコードでも正常にExcelが消えてくれる事が
ある、という事です。一度でも消えなければ、どこかに開放ミスがあると睨んでよいです。
→消えるようになれば、数行づつコードを書き足していきExcelが消えていることを
都度確認してください。消えなくなった時点でその部分が開放ミスだと分かりますので、
今後自分で「特別環境下・稀な形での開放漏れ」の検出ができるようになります。
あとこのような癖をつけておけば、上記「その他特別なコーディング下で発生」するような
開放ミスについても悩まずにクリア出来るようになります。
(自分の場合、上記が全て1から手探りでしたので散々苦労しましたが。。。)
少しでもお役に立てば幸いです。
どうぞ頑張ってください ^^b
No.2
- 回答日時:
CloseするからQuiteが処理されないのです。
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) 別ブックからシートのコピー 3 2022/04/01 20:07
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) 数式が消える 1 2023/03/19 16:55
- Excel(エクセル) Excel-VBAの「しばらくお待ちください」のダイアログが自動的に閉じない 2 2023/05/24 15:31
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
1、Rstudioで回帰直線を求める...
-
フィルターかけた後、重複を除...
-
C#で入力可能なカウントダウン...
-
TVリモコン設定(SMILE KIDS)
-
JavaScriptの定数名が取り消し...
-
変数名「cur」について
-
MIPSのアセンブリ・コードの問...
-
2つのチェックボックスを制御
-
◾️Excel VBA 統合について Cons...
-
なぜシフトJISにロシア語がある...
-
ブログ等で公開されているサン...
-
コマンドボタンを押したときに...
-
欠番の抽出について
-
ASCIIコードを文字に変換したい
-
sinカーブの表示のさせ方
-
Access:クエリーにて集計後に...
-
カーソル宣言をIFで分けられま...
-
複数テーブルのGROUP BY の使い...
-
for whichの使い方
-
no appleとno applesの違いは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
過剰なオブジェクト指向脳から...
-
1、Rstudioで回帰直線を求める...
-
1日に1人がこなせるプログラム...
-
Exel VBA 別ブックから該当デ...
-
access2003 クエリSQL文に...
-
pythonにてseleniumを使うも、...
-
access2021 VBA メソッドまたは...
-
chatgptでつくってもらったコー...
-
パイソンプログラム
-
Gitのクローンについて
-
ExcelのVBAコードについて教え...
-
JANコードとPOSコードは同じ?
-
sinカーブの表示のさせ方
-
COBOLの文法
-
特定行の背景色を変えたいのですが
-
JavaScriptの定数名が取り消し...
-
アルファベットに付いて質問し...
-
◾️Excel VBA 統合について Cons...
-
変数名「cur」について
おすすめ情報