お世話になります。
vb.net2010で、Windows8.1上のexcel2013を操作するアプリケーションを開発しております。
以下のコードを実行後、EXCELのプロセスが残ってしまい、原因がわかならい状態です。
恐れ入りますが、何が原因かおわかりになる方はご教示いただけないでしょうか。
参照内容は以下になります。
参照名:Microsoft.Office.Interop.Excel
種類:.NET
バージョン:14.0.0.0
コードは以下になります。
Imports Microsoft.Office.Interop
Dim xlsApp As Excel.Application = Nothing
Dim xlsWookBook As Excel.Workbook = Nothing
Dim aRange As Excel.Range = Nothing
Try
xlsApp = New Excel.Application()
xlsApp.Visible = False
xlsWookBook = xlsApp.Workbooks.Open(strPath)
DirectCast(xlsWookBook.Sheets(1), Excel.Worksheet).Select()
aRange = xlsApp.Range("B5")
aRange.Value2 = "AAA"
aRange = xlsApp.Range("I4")
aRange.Value2 = "BBB"
Finally
If aRange IsNot Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(aRange)
End If
If xlsWookBook IsNot Nothing Then
xlsWookBook.Save()
xlsWookBook.Close()
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsWookBook)
End If
If xlsApp IsNot Nothing Then
xlsApp.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsApp)
End If
GC.Collect()
End Try
以上宜しくお願い申し上げます。
No.1ベストアンサー
- 回答日時:
すべてのメンバーアクセスによって取得されるCOMオブジェクトは解放する必要があります。
プロパティやインデクサから取得する場合でもこれは例外ではないです。
例えば,
> xlsWookBook = xlsApp.Workbooks.Open(strPath)
は,xlsApp.Workbooksを最後に解放できるように書く必要があります。
なお,.xlsx形式であれば,OOXMLとして読み書きした方が楽な場合も多いです。
nugetでEPPlusなどをインストールしてしまえば,COMの場合とそれほど代わらない書き方ができますし。
その後色々試してみましたが、結果Rangeの解放が出来ておりませんでした。解決しましたのでご報告申し上げます。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) countifsについての質問 3 2023/03/08 13:45
- 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) Excel VBAで並べ替えをしたい 3 2023/02/25 09:31
- Visual Basic(VBA) Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを 2 2023/06/14 01:48
- Visual Basic(VBA) エクセルのマクロとシートの保護について教えてください。 1 2022/10/18 08:36
- Visual Basic(VBA) モードレスでユーザーフォームが開け(表示)ません。 4 2022/09/09 11:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
textBox isNot Nothing とは
-
Excelでフィルタをかけると警告...
-
実行時エラー 3265「要求された...
-
AccessVBAで「dim dbs as datab...
-
VBAで既に開いている別アプリケ...
-
テキストボックス中の文字列の...
-
VB6 エクセルに画像貼り付け
-
EXCEL VBA COLLECTIONオブジェ...
-
VBScriptからDLL参照設定したい
-
python __del__()に関して
-
InternetExplorer.Application...
-
上下の位置揃えについて
-
UserForm1.Showでエラーになり...
-
エクセルのVBAの標準モジュール...
-
ActiveXコントロールを用いたマ...
-
AccessVBA NULLについて
-
VBで引数にDictionaryオブジェ...
-
Excel VBAでWordの複数ファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
実行時エラー 3265「要求された...
-
エクセルのVBAの標準モジュール...
-
VBAで既に開いている別アプリケ...
-
VBAで Set wb = Sheets(1).Cop...
-
テキストボックス中の文字列の...
-
PowerPointVBAでスライドマスタ...
-
エクセルマクロエラー「'Cells'...
-
VBAからPDFファイルにパスワー...
-
Excelでフィルタをかけると警告...
-
オブジェクトが見つかりません
-
ある文字列が全て数字であるか...
-
EXCEL VBA オートシェイプナン...
-
[VBA]CDOメッセージ送信エラー
-
VBAで作成するメール(開封確認...
-
VBAについてです。 初心者です...
-
VBA:オートシェイプの線の長...
-
VBで引数にDictionaryオブジェ...
-
AccessVBAで「dim dbs as datab...
おすすめ情報
早速のご回答誠にありがとうございます。xlsApp.Workbooksの解放を試してみましたが、私の記述したコードでは現象は改善されませんでした。FINALYにどのようなコードを入れたらよいかご教示いただけますでしょうか。力量不足で申し訳ございませんが、何卒宜しくお願い申し上げます。