
Excel出力の解放について質問です。
下記URLを参考に作成しましたが、出力をし終えたときにプロセスを見るとExcelの解放がされません。
http://hanatyan.sakura.ne.jp/dotnet/Excel01.htm
助言をもらえないでしょうか?
With SaveFileDialog1
.FileName = savefilename
If .ShowDialog() = Windows.Forms.DialogResult.OK Then
wstrPath = .FileName()
If Func_Excelチェック(wstrPath) = False Then
Exit Function
End If
End If
End With
Dim excel As New Excel.Application
Dim xlbooks As Excel.Workbooks = excel.Workbooks
Dim xlbook As Excel.Workbook = xlbooks.Add
Dim xlsheets As Excel.Sheets = xlbook.Worksheets
Dim xlsheet As Excel.Worksheet = xlsheets.Item(1)
Dim xlCells As Excel.Range
Dim xlRange1 As Excel.Range
xlCells = xlsheet.Cells
Dim i As Integer = 1
作成データテーブルに接続
xlRange1 = xlCells(1, 1)
xlRange1.Value = "工場番号"
MRComObject(xlRange1, True)
While sqlReader.Read
xlRange1 = xlCells(i + 1, 1)
xlRange1(xlCells(i + 1, 1)).Select()
xlRange1.Value = sqlReader("入力_工場番号")
MRComObject(xlRange1, True)
i += 1
End While
excel.DisplayAlerts = False
xlsheet.SaveAs(wstrPath)
'Select Case Val(excel.Version)
'Case 9
'xlbook.SaveAs(Filename:=wstrPath)
'Case 12
'xlbook.SaveAs(Filename:=wstrPath, FileFormat:=56)
'End Select
'MRComObject(xlsheet, True)
excel.DisplayAlerts = True
MRComObject(xlsheet)'xlSheet の解放
MRComObject(xlsheets)'xlSheets の解放
xlbook.Close()'xlBook を閉じる
MRComObject(xlbook)'xlBook の解放
MRComObject(xlbooks)'xlBooks の解放
excel.Quit()'Excelを閉じる
MRComObject(excel)'excel を解放
Private Function Func_Excelチェック(ByVal arg As String) As Boolean
Dim excel As New Excel.Application
Dim xlbooks As Excel.Workbooks = excel.Workbooks
Dim xlbook As Excel.Workbook
excel.Visible = False
excel.Application.DisplayAlerts = False
Try
If System.IO.File.Exists(arg) = True Then
xlbook = xlbooks.Open(arg)
xlbook.SaveAs(arg, FileFormat:=42, CreateBackup:=False)
MRComObject(xlbook, True)
Return True
Else
Return True
End If
Catch ex As Exception
MessageBox.Show("")
Return False
Finally
xlbooks.Close()
MRComObject(xlbooks, True)
excel.Quit()
MRComObject(excel, True)
End Try
End Function
No.1ベストアンサー
- 回答日時:
多分 xlCellsを開放していないのが原因だと思います
While sqlReader.Read
xlRange1 = xlCells(i + 1, 1)
xlRange1(xlCells(i + 1, 1)).Select()
xlRange1.Value = sqlReader("入力_工場番号")
MRComObject(xlRange1, True)
i += 1
End While
excel.DisplayAlerts = False
を
While sqlReader.Read
xlRange1 = xlCells(i + 1, 1)
'xlRange1(xlCells(i + 1, 1)).Select() ここは必要ないかも
xlRange1.Value = sqlReader("入力_工場番号")
MRComObject(xlRange1, True)
i += 1
End While
' ここでxlCellsを開放
MRComObject(xlCells, True)
excel.DisplayAlerts = False
といった具合にして見ましょう
No.2
- 回答日時:
こんばんは。
COMがすべてのオブジェクトに対して、参照カウンタを持っているので、全部開放しないとダメです・・・。
Dim xlCells As Excel.Range
Dim xlRange1 As Excel.Range
ここも含めて、参照したものはすべて開放してください。
結構困るんですよね・・・これ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) 数式が消える 1 2023/03/19 16:55
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マルチディスプレイを使用して...
-
VBscriptでEXCELを起動
-
フィルタ係数から特性を求める...
-
VB.NET Excelの解放
-
Excelで、あるセルの値に応じて...
-
「段」と「行」の違いがよくわ...
-
VBAマクロ実行時エラーの修正に...
-
エクセルで離れた列を選択して...
-
EXCELのSheet番号って変更でき...
-
【Excel関数】UNIQUE関数で"0"...
-
Worksheets メソッドは失敗しま...
-
B列の最終行までA列をオート...
-
VLOOKUPの列番号の最大は?
-
特定の文字がある行以外を削除...
-
URLのリンク切れをマクロを使っ...
-
エクセル 上下で列幅を変えるには
-
マクロ1があります。 A1のセル...
-
【VBA】写真の貼り付けコードが...
-
特定の色のついたセルを削除
-
Excel UserForm の表示位置
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マルチディスプレイを使用して...
-
VBでexcelのプレビュー画面表示
-
VBscriptでEXCELを起動
-
VB.NETでエクセル操作
-
あなたは何も恐れる必要はない...
-
vbscriptでエクセルを操作する
-
powershellスクリプトで出力し...
-
VB.NET Excelの解放
-
beep音を変えたい
-
リンクのExcelファイルをIE上で...
-
ASPでエクセルの印刷定義・・・
-
ADOでエクセルに接続した後...
-
VC6でエクセルのセルに画像を貼...
-
フィルタ係数から特性を求める...
-
エクセルグラフがピクチャボッ...
-
特定の文字がある行以外を削除...
-
「段」と「行」の違いがよくわ...
-
Excelで、あるセルの値に応じて...
-
VBA シートをコピーする際に Co...
-
vba 2つの条件が一致したら...
おすすめ情報