
お世話になります。
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
テキストボックス中の文字列の...
-
Excelでフィルタをかけると警告...
-
エクセルのVBAの標準モジュール...
-
VBAで既に開いている別アプリケ...
-
エクセルVBAで2つの画像を比較...
-
[VBA]CDOメッセージ送信エラー
-
上下の位置揃えについて
-
エクセルマクロエラー「'Cells'...
-
「オブジェクト変数または With...
-
Shell.ApplicationのNameSpace...
-
AccessVBAで「dim dbs as datab...
-
コンパイルすると「メソッドま...
-
VBScriptでファイルの日時順(降...
-
エクセルVBAで配列内に空白デー...
-
Excel VBAでIEにアクセスするプ...
-
VBA:オートシェイプの線の長...
-
オブジェクト変数またはWITHブ...
-
CreateObjectとGetObjectの違い
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
テキストボックス中の文字列の...
-
エクセルのVBAの標準モジュール...
-
Excelでフィルタをかけると警告...
-
実行時エラー 3265「要求された...
-
上下の位置揃えについて
-
ExcelVBAでのNZ関数について
-
VBAで既に開いている別アプリケ...
-
VBAで Set wb = Sheets(1).Cop...
-
AccessVBAで「dim dbs as datab...
-
EXCEL VBA オートシェイプナン...
-
オブジェクト変数またはWITHブ...
-
[VBA]CDOメッセージ送信エラー
-
エクセルマクロエラー「'Cells'...
-
findメソッドの変数について
-
オブジェクトが見つかりません
-
ある文字列が全て数字であるか...
-
オブジェクト変数の取得について
-
CreateObjectとGetObjectの違い
おすすめ情報
早速のご回答誠にありがとうございます。xlsApp.Workbooksの解放を試してみましたが、私の記述したコードでは現象は改善されませんでした。FINALYにどのようなコードを入れたらよいかご教示いただけますでしょうか。力量不足で申し訳ございませんが、何卒宜しくお願い申し上げます。