C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: エクセルのCOMオブジェクト開放について


(過去ログ 47 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■25501 / inTopicNo.1)  エクセルのCOMオブジェクト開放について
  
□投稿者/ たけちゃん (16回)-(2008/09/20(Sat) 18:07:01)

分類:[VB.NET/VB2005 以降] 

お世話になります。

COMオブジェクト開放について、教えて頂きたいのですが。
以下のコードを実装しましたが、If flag = 0の時に、エクセルのプロセスが終了しません。
但し、For文を全てコメントにするとエクセルのプロセスは終了します。
見当がつかず、困っています。

        Dim i As Integer = 0
        Dim flag As Integer = 0
 
        Dim xlApp As New Excel.Application()
        Dim xlBooks As Excel.Workbooks = xlApp.Workbooks
        Dim xlBookOp As Excel.Workbook
        Dim xlSheetsOp As Excel.Sheets
        Dim xlSheetOp As Excel.Worksheet
        Dim xlBook As Excel.Workbook
        Dim xlSheets As Excel.Sheets
        Dim xlSheet As Excel.Worksheet


        'チェックシートファイルを開く 
        '読み取り専用で開く
        xlBookOp = xlBooks.Open(xl1FilePath, ReadOnly:=True)
        xlSheetsOp = xlBookOp.Worksheets
        xlSheetOp = xlSheetsOp.Item(1)

        'チェックシートファイルより「データテーブル生成シート」の検索&抽出
        For i = 1 To xlBookOp.Worksheets.Count
            If xlBookOp.Worksheets(i).Name = "データテーブル生成" Then
                'チェックシートファイルより「データテーブル生成シート」を見つけた
                xlSheetOp = xlSheetsOp.Item(i)
                flag = 1
                Exit For
            End If
        Next i

        '「データテーブル生成シート」が存在しないか判断。
        If flag = 0 Then
            MsgBox("チェックシートファイル内に「データテーブル生成シート」が存在しません。" )
            'ファイルを閉じる
            xlBookOp.Close(xl1FilePath)
            'COM オブジェクトの参照カウントを解放する
            MRComObject(xlSheetsOp)
            MRComObject(xlSheetOp)
            MRComObject(xlBooks)
            MRComObject(xlBookOp)
            'Excel終了
            xlApp.Quit()
            MRComObject(xlApp)
            Return result
        End If

引用返信 編集キー/
■25502 / inTopicNo.2)  Re[1]: エクセルのCOMオブジェクト開放について
□投稿者/ 渋木宏明(ひどり) (885回)-(2008/09/20(Sat) 18:23:03)
渋木宏明(ひどり) さんの Web サイト
> For i = 1 To xlBookOp.Worksheets.Count
> If xlBookOp.Worksheets(i).Name = "データテーブル生成" Then

解放漏れ。
引用返信 編集キー/
■25503 / inTopicNo.3)  Re[2]: エクセルのCOMオブジェクト開放について
□投稿者/ たけちゃん (18回)-(2008/09/20(Sat) 18:37:39)
No25502 (渋木宏明(ひどり) さん) に返信
>> For i = 1 To xlBookOp.Worksheets.Count
>> If xlBookOp.Worksheets(i).Name = "データテーブル生成" Then
>
> 解放漏れ。

お世話になります。

>
> 解放漏れ。
どの部分が開放漏れなのでしょうか。
すいません。具体的に教えていただけると助かります。
VBでの実装を始めたばかりの初心者なものですので。
引用返信 編集キー/
■25505 / inTopicNo.4)  Re[3]: エクセルのCOMオブジェクト開放について
□投稿者/ くだん (5回)-(2008/09/20(Sat) 18:43:38)
No25503 (たけちゃん さん) に返信
>xlBookOp.Worksheets.Count
xlBookOp.Worksheets で Worksheets オブジェクトを呼び出しているのに解放していない。

>xlBookOp.Worksheets(i)
xlBookOp.Worksheets で Worksheets オブジェクトを呼び出しているのに解放していない。
xlBookOp.Worksheets(i) で Worksheet オブジェクトを呼び出しているのに解放していない。

ピリオド(.)が2個あったらまずいと思っていいです。
引用返信 編集キー/
■25509 / inTopicNo.5)  Re[4]: エクセルのCOMオブジェクト開放について
□投稿者/ たけちゃん (19回)-(2008/09/20(Sat) 19:19:54)
No25505 (くだん さん) に返信
> ■No25503 (たけちゃん さん) に返信
> >xlBookOp.Worksheets.Count
> xlBookOp.Worksheets で Worksheets オブジェクトを呼び出しているのに解放していない。
>
> >xlBookOp.Worksheets(i)
> xlBookOp.Worksheets で Worksheets オブジェクトを呼び出しているのに解放していない。
> xlBookOp.Worksheets(i) で Worksheet オブジェクトを呼び出しているのに解放していない。
>
> ピリオド(.)が2個あったらまずいと思っていいです。

お世話になります。

    For i = 1 To xlBookOp.Worksheets.Count
If xlBookOp.Worksheets(i).Name = "データテーブル生成" Then
MRComObject(xlBookOp)<−−−−−−−−−−−−−−−−ここで開放しているのですが効果ありませんでした。
xlSheetOp = xlSheetsOp.Item(i)
flag = 1
Exit For
End If
Next i
引用返信 編集キー/
■25510 / inTopicNo.6)  Re[5]: エクセルのCOMオブジェクト開放について
□投稿者/ も (40回)-(2008/09/20(Sat) 22:06:34)
xlBookOp.Worksheets(i)はどうなんでしょ?
引用返信 編集キー/
■25517 / inTopicNo.7)  Re[5]: エクセルのCOMオブジェクト開放について
□投稿者/ ぶべきばく (1回)-(2008/09/21(Sun) 06:54:42)
ここを読んで出直しておいで。
http://jeanne.wankuma.com/tips/vb.net/programming/releasecom.html

予備知識がたらなすぎて会話が成り立っていないから。

> > 解放漏れ。
> どの部分が開放漏れなのでしょうか。

どの部分かについてはバッチリ書いてくれてるよ。と。
引用返信 編集キー/
■25548 / inTopicNo.8)  Re[6]: エクセルのCOMオブジェクト開放について
□投稿者/ たけちゃん (20回)-(2008/09/22(Mon) 11:45:24)
No25517 (ぶべきばく さん) に返信
> ここを読んで出直しておいで。
> http://jeanne.wankuma.com/tips/vb.net/programming/releasecom.html
>
> 予備知識がたらなすぎて会話が成り立っていないから。
>
>>> 解放漏れ。
>>どの部分が開放漏れなのでしょうか。
>
> どの部分かについてはバッチリ書いてくれてるよ。と。


お世話になります。

御回答有難う御座いました。
解決できました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -