tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: Excelのプロセス
投稿日: 2007/03/05(Mon) 11:01
投稿者魔界の仮面弁士
# なぜ、Excel 解放問題に関する質問が無くならないのだろう…?

>         strName = objExcel.Application.GetOpenFilename("Excelファイル (*.xls), *.xls")
Application プロパティの使用は冗長です。
objExcel.Application は、objExcel 自身を返しますので。

>         objBook = objExcel.Workbooks.Open(strName)
Workbooks を変数にうけとり、最後に ReleaseComObject メソッドで解放しましょう。
VB6 や VBA とは、ActiveX の解放手順が全く異なることに注意して下さい。

>         objBook.Worksheets("Sheet1").Cells(1, 1) = "Test"
Worksheets を変数に受けましょう。
Worksheet も変数に受けましょう。
Range も変数に受けましょう。
そして、Range の Value プロパティに "Test" を代入し、それから最後に、
変数に受けた ActiveX オブジェクトを、ひとつひとつ解放していきましょう。

>         objBook.Close()
>         objBook = Nothing
>         objExcel.Quit()
>         objExcel = Nothing
これらの Nothing を代入する行為自体には、ほとんど意味がありません。
(これが VB6 であれば、少しは意味があるのですが)
Excel オブジェクトの解放の必要なのは、Marshal クラスの ReleaseComObject メソッドを呼び出すことです。

>         MsgBox("出力終了", MsgBoxStyle.Information, "報告")
最初は vbInformation 定数を使っていて、ここでは MsgBoxStyle.Information になっていますね。
どちらの定数を使っても(あるいは MessageBox.Show に切り替えても)結果は同じではありますが、
意識的に、コードに統一性を持たせる癖を付けておいた方が良いかと思いますよ。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。