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

タイトル Excelのプロセスが終了しない
投稿日: 2005/03/31(Thu) 16:30
投稿者VB.net初心者
[OSのVer]:WindowsXP    [VBのVer]:VB.NET  
いつも参考にさせて頂いております。
同じような質問が続いてしまって申し訳ないのですが、ぜひ教えて頂けたらと思い、投稿させて頂き
ました。

データベースから取得したレコードをエクセルに書き込むアプリケーションを作成しているのです
が、取得したレコード数が2件以上になると、Excelのプロセスが残ってしまいます。
毎回COMの開放は行っているつもりなのですが、なぜプロセスが消えないのか理由が分かりません。
COMの開放については、ホームページ内の記述を参考にさせて頂きました。

以下、ソースです。
よろしくお願いいたします。


----------------------

Dim xlApp As Excel.Application = CreateObject("Excel.Application")
Dim xlBooks As Excel.Workbooks = xlApp.Workbooks
Dim xlBook As Excel.Workbook = xlBooks.Open(xlsFile)
Dim xlSheets As Excel.Sheets = xlBook.Worksheets
Dim xlSheet As Excel.Worksheet = xlSheets.Item(sheet_save)
Dim xlRange As Excel.Range
Dim row_cnt As Integer = 5

'タイトル入力用の変数
Dim strTitle(0, 6) As String
'データ入力用の変数
Dim strDat(0, 6) As String

'タイトルの設定
strTitle(0, 0) = "タイトル"
strTitle(0, 4) = DateTime.Now.ToString

xlRange = xlSheet.Range("A1:G1")
'セルへデータの入力
xlRange.Value = strTitle
'xlRangeの解放
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRange)

Do Until (レコードがなくなるまで)
    '2行目からは前の行をコピーする
    If row_cnt > 5 Then
        xlSheet.Rows(row_cnt - 1).Select()
        xlApp.Selection.Copy()
        xlSheet.Rows(row_cnt).Select()
        xlApp.Selection.Insert()
        xlApp.CutCopyMode = False
        xlApp.Selection.ClearContents()
    End If

    'データの入力セル範囲
    Dim strRange As String = "A" + row_cnt.ToString + ":" + "G&quo
t; + row_cnt.ToString
    xlRange = xlSheet.Range(strRange)

    strDat(0, 0) = "aaa"
    strDat(0, 1) = "bbb"
    strDat(0, 2) = "ccc"
    strDat(0, 3) = "ddd"
    strDat(0, 4) = "eee"
    strDat(0, 5) = "fff"
    strDat(0, 6) = "ggg"

    'セルへデータの入力
    xlRange.Value = strDat
    'xlRangeの解放
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRange)

    '書き込む行番号をインクリメント
    row_cnt += 1

Loop

'ファイルの保存処理
'保存時の問合せのダイアログを非表示に設定
xlApp.DisplayAlerts = False
'上書き保存
xlSheet.SaveAs(xlsFile)
'元に戻す
xlApp.DisplayAlerts = True

'終了処理
'xlRange の開放
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRange)
'xlSheet の開放
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet)
'xlSheets の開放
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheets)
'xlBook を閉じる
xlBook.Close(False)
'xlBook の開放
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook)
'xlBooks の開放
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks)
'Excelを閉じる
xlApp.Quit()
'xlApp を開放
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)

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

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