DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Excelに書き出す方法

分類:[全般]

こんにちわ。
あるデータを→新規にExcelファイルをOPEN→セルに書出し→保存
といったことをしたいのですが、一応サンプルを見つけて修正してみたものの
新規にOPENする方法と保存方法(保存後に出来たExcelファイルを開くと正常に開けない??)がわかりません。

以下、コードを書かせていただきます。
どなたかご指摘いただけるとありがたいです。宜しくお願いします。
[Ver:VB.NET2002]

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim xlapp As Object
Dim xlbook As Object
Dim xlsheet As Object
Dim row As Integer = 1
Dim col As Integer = 1
Dim strFile As String = "d:\iwamura\TMP.xls"

'Excelを起動
On Error Resume Next
xlapp = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
On Error GoTo 0
xlapp = CreateObject("Excel.Application")
End If
On Error GoTo 0

'ブックを開く
xlbook = xlapp.Workbooks.Open(strFile)
'シートを開く
xlsheet = xlapp.WorkSheets("sheet1")
xlsheet.Cells(row, col) = "aaaaaaaaaaaaa"

'メッセージ非表示
xlapp.DisplayAlerts = False
'保存してブックを閉じる
xlbook.Close(SaveChanges:=True)

'エクセル終了
xlapp.Quit()
xlsheet = Nothing
xlbook = Nothing
xlapp = Nothing
End Sub
>
> Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
> Dim xlapp As Object
> Dim xlbook As Object
> Dim xlsheet As Object
> Dim row As Integer = 1
> Dim col As Integer = 1
> Dim strFile As String = "d:\iwamura\TMP.xls"
>
> 'Excelを起動
> On Error Resume Next
> xlapp = GetObject(, "Excel.Application")
> If Err.Number <> 0 Then
> On Error GoTo 0
> xlapp = CreateObject("Excel.Application")
> End If
> On Error GoTo 0
>
> 'ブックを開く
> xlbook = xlapp.Workbooks.Open(strFile)
> 'シートを開く
> xlsheet = xlapp.WorkSheets("sheet1")
> xlsheet.Cells(row, col) = "aaaaaaaaaaaaa"
>
> 'メッセージ非表示
> xlapp.DisplayAlerts = False
> '保存してブックを閉じる
> xlbook.Close(SaveChanges:=True)
>
> 'エクセル終了
> xlapp.Quit()
> xlsheet = Nothing
> xlbook = Nothing
> xlapp = Nothing
> End Sub
>
上記の処理後、TMP.xlsを開こうとすると開けない訳ですね?
一度、上記処理が終わったところで、Windowsのタスクマネージャを見てみてください。
おそらく、EXCEL.exeがプロセスとして残ったままのはずです。
これを解放してやると、問題なく開けるはずです。
ご回答ありがとうございます。
レスのないまま埋もれていくのかな?と思ってました。(^ ^;)
> 上記の処理後、TMP.xlsを開こうとすると開けない訳ですね?
> 一度、上記処理が終わったところで、Windowsのタスクマネージャを見てみてください。
> おそらく、EXCEL.exeがプロセスとして残ったままのはずです。
> これを解放してやると、問題なく開けるはずです。
>
確かにタスクマネージャで確認したところプロセスが残っていました。
ただプログラムではクローズしているのになぜ残っているのか
疑問です。やはり書き方に問題があるのだと思います。
引き続き色々試したいと思っております。
■No181に返信(kikiさんの記事)

↓は以前に書いたものから抜粋したものです。

Dim xlsapp As New Excel.Application
Dim xlsbook As Excel.Workbook
Dim xlssheet As Excel.Worksheet

xlsbook = xlsapp.Workbooks.Add
xlssheet = xlsbook.ActiveSheet

〜データの書き込みの処理〜

xlsbook.SaveAs(saveFileName)
xlsbook.Close()

xlssheet = Nothing
xlsbook = Nothing
xlsapp = Nothing

DOBON.NET | プログラミング道 | プログラミング掲示板