Excelのプロセスが消えない
投稿者 かずき  (社会人)
投稿日時
2009/1/18 06:01:19
ここらへんを参考にしてみてください。
http://jeanne.wankuma.com/tips/csharp/programming/releasecom.html
http://jeanne.wankuma.com/tips/csharp/programming/releasecom.html
投稿者 るしぇ  (社会人)
投稿日時
2009/1/18 16:00:29
花ちゃんのサイトとかね。
http://hanatyan.sakura.ne.jp/dotnet/Excel08.htm
VB6のテクニックは通用しません。このサイトでもちょこっと
情報は載ってます。
Visual Basic 中学校 > 初級講座 > 第44回 周辺にあるテクノロジ
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard44.htm
> 発展学習 - COMオブジェクトの開放
> この開放作業は必須ではありません(それに面倒なので私が個人的にやりたくありません
wwwまぁ、中学校レベルならいいのかな(^^;
かずきさんご紹介のページにも載っている通り、
ReleaseComObject を Excel のオブジェクトを1つ
使うごとに実行する必要があります。
その際、命令の右辺および左辺でピリオド(.)が2個
あったらアウトと思ってください。
> xlSheet.Cells(i + 1, 1).value
xlSheet.Cells(i + 1, 1) という指定で Excel.Range
オブジェクトが使われるので、ここを2段階に分ける
必要があります。
更に使用した Excel.Range を ReleaseComObject して
ください。
http://hanatyan.sakura.ne.jp/dotnet/Excel08.htm
VB6のテクニックは通用しません。このサイトでもちょこっと
情報は載ってます。
Visual Basic 中学校 > 初級講座 > 第44回 周辺にあるテクノロジ
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard44.htm
> 発展学習 - COMオブジェクトの開放
> この開放作業は必須ではありません(それに面倒なので私が個人的にやりたくありません
wwwまぁ、中学校レベルならいいのかな(^^;
かずきさんご紹介のページにも載っている通り、
ReleaseComObject を Excel のオブジェクトを1つ
使うごとに実行する必要があります。
その際、命令の右辺および左辺でピリオド(.)が2個
あったらアウトと思ってください。
> xlSheet.Cells(i + 1, 1).value
xlSheet.Cells(i + 1, 1) という指定で Excel.Range
オブジェクトが使われるので、ここを2段階に分ける
必要があります。
更に使用した Excel.Range を ReleaseComObject して
ください。
投稿者 たらちゃん  (社会人)
投稿日時
2009/1/18 18:26:42
るしぇさん、かずきさん、ご回答いただきありがとうございます。
COMオブジェクトの開放を付加したところ問題なくプロセスが終了しました。
大変勉強になりました。
どうもありがとうございました。
COMオブジェクトの開放を付加したところ問題なくプロセスが終了しました。
大変勉強になりました。
どうもありがとうございました。
VB.netで以下のような流れのプログラムを作成しました。
1.csvファイルをデータセットに格納し、データグリッドに表示
2.データグリッドに表示したデータをExcelに出力
しかしExcelへの出力が完了してもExcelのプロセスが残ったままです。
このHPにあるVB6テクニックで解説してある「消えないExcelのプロセス」の箇所も読み、
その通りにExcelアプリケーションは終了しているはずなのですが・・・
どなたか原因をご教示いただけると幸いです。
※以下に参考までにコードの一部を抜粋します
(oledvはcsvファイルから読み込んだデータセットから生成したデータビューです。またExcelを
参照設定しています。)
'-------------
'Excelに接続
'-------------
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
'Excelの起動
xlApp = CreateObject("Excel.application")
'新規Excelファイルを作成する
xlBook = xlApp.Workbooks.Add
'データを出力するワークシートをSheet1にする
xlSheet = xlBook.Worksheets(1)
'Excelを非表示にする
xlApp.Visible = False
'-------------------------
'DataSet抽出結果を出力する
'-------------------------
Me.ProgressBar1.Minimum = 0
Me.ProgressBar1.Maximum = oledv.Count - 1
Dim i As Integer
For i = 0 To oledv.Count - 1
xlSheet.Cells(i + 1, 1).value = "会社名"
xlSheet.Cells(i + 1, 2).value = "住所"
xlSheet.Cells(i + 1, 3).value = "県名"
xlSheet.Cells(i + 2, 1).value = oledv(i)(1) '会社名
xlSheet.Cells(i + 2, 2).value = oledv(i)(5) '住所
xlSheet.Cells(i + 2, 3).value = oledv(i)(10) '県
Me.ProgressBar1.Value = i
Next
xlBook.SaveAs(Microsoft.VisualBasic.Left(myfilepath, Len(myfilepath) - 4) & "_修正")
xlBook.Close()
xlApp.Quit()
xlSheet = Nothing
xlBook = Nothing
xlApp = Nothing
'処理終了メッセージ
MsgBox("ファイルの加工を終了しました")
Me.ProgressBar1.Value = 0
End Sub