数個前のスレッドで勘違いして,締め切らせていただきました.
申し訳ございません.未解決で同じ質問をさせてください.
コードの流れといたしましては,
エクセル操作
↓
エクセル解放
↓ ←下記2行のコードが無ければ,この時点でExcel.exeは消えています.
MsgBox("終了")
↓
アプリケーションを右上の×マークから終了(下記2行のコードを入れると,Excel.exeがギリギリまで残っております.)
Dim xlApp As New Excel.Application
Dim xlBooks As Excel.Workbooks = xlApp.Workbooks
Dim WB As Excel.Workbook
Dim xlSheets As Excel.Worksheets
Dim xlSheet As Excel.Worksheet
Dim Mypath As String = TextBoxパス.Text
Dim FName As String
FName = Dir(Mypath & "*.xls", vbNormal)
Do While FName <> ""
WB = xlBooks.Open(Mypath & FName)
For Each xlSheet In WB.Worksheets
Next
' ↑の2行がなくなれば無事解放できます
WB.Save() : WB.Close()
MRComObject(WB)
FName = Dir()
Loop
Me.Activate()
MRComObject(xlSheet) : xlSheet = Nothing
MRComObject(xlSheets) : xlSheets = Nothing
WB = Nothing
MRComObject(xlBooks) : xlBooks = Nothing
xlApp.Quit() : MRComObject(xlApp) : xlApp = Nothing
MsgBox("終了")
先ほどのスレッドでアドバイス・指摘していただいた部分とあわせて
色々試してみましたが,自分では怪しそうな個所を見つけることすらできません...
暗黙宣言やNothing,Quit等ネットで見かけるものは一通り試したつもりなのですが...
もしお詳しい方がいらっしゃれば,些細なことでも結構ですので
なんでもアドバイスいただければ非常にうれしいです.
どうぞよろしくお願いいたします.
No.1ベストアンサー
- 回答日時:
先の質問時の回答に
WorkSheetsコレクションと WorkSheetオブジェクトを暗黙にならないように取得/開放をするようにといわれたのではないですか?
WB.WorkSheets を xlSheetsに変更してみてはいかがですか
xlSheets = WB.Worksheets
For Each xlSheet In Xlsheets
' Sheetに対するアクション
' 不要になったxlSheetをここで開放
MRComObject(xlSheet) : xlSheet = Nothing
Next
' 不要になったSheetsコレクションを開放
MRComObject(xlSheets) : xlSheets = Nothing
といった具合にして見ましょう
不要になった時点で開放するように心がけましょう
redfox63 様
どうもありがとうございます.
解決いたしました.非常に嬉しいです.
アドバイスいただいた後,xlSheets = WB.Worksheetsで実行エラーが出るので
悩んでおりましたが,Dim xlSheets As Excel.Worksheets を
Dim xlSheets As Excel.Sheets としてなおりました.
~.Worksheetsの暗黙参照につきましてはGoogleで「"For Each xlSheet In" 」と検索すると
何故かそれに続いて ~.Worksheetsというコードばかりひっかかるので,問題ないのだと思い込んでおりました.
また「「.」が2つ以上はダメ」とバカノヒトツオボエで, WB.Worksheets.Count → WB.Worksheetsというように,
「.」を1つにしたことでこの行についてはOKなのかと...
最近ちょうどMRComObject(~)の配置位置についても,本来ループの中に
入れるべきコードなのではないかと自分なりに疑問を感じておりましたが,
それについても併せてご回答いただけたので非常に嬉しいです.
今から,これまでに作ったコードをすべて見直してみます.
本当にどうもありがとうございました.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) エラー処理 3 2022/04/11 14:58
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
pythonにてseleniumを使うも、...
-
Exel VBA 別ブックから該当デ...
-
chatgptでつくってもらったコー...
-
ExcelのVBAコードについて教え...
-
パイソンプログラム
-
フィルターかけた後、重複を除...
-
1、Rstudioで回帰直線を求める...
-
vb6.0の実行時エラー'3075'につ...
-
Gitのクローンについて
-
特定行の背景色を変えたいのですが
-
Excel VBA素人です。VBAで図形...
-
コンパイルエラー 変数が定義...
-
access2003 クエリSQL文に...
-
楽観的排他処理のためViewState...
-
プレースホルダー
-
CFormViewでの印刷について
-
変数名「cur」について
-
文字コードについて
-
Excel VBAについて
-
SQL
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
access2003 クエリSQL文に...
-
1日に1人がこなせるプログラム...
-
Exel VBA 別ブックから該当デ...
-
pythonにてseleniumを使うも、...
-
ExcelのVBAコードについて教え...
-
ExcelのVBAコードについて教え...
-
chatgptでつくってもらったコー...
-
欠番の抽出について
-
JANコードとPOSコードは同じ?
-
JavaScriptの定数名が取り消し...
-
1、Rstudioで回帰直線を求める...
-
特定行の背景色を変えたいのですが
-
変数名「cur」について
-
PreviewKeyDownイベントが2回...
-
将来AIが進歩してくるにつれて...
-
ACCESSユニオンクエリでORDER B...
-
COBOLの文法
-
VBAでファイルオープン後にコー...
-
Nullの使い方が不正です。
おすすめ情報