• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DataGridViewのデーターをExcelに)

DataGridViewのデータをExcelに

このQ&Aのポイント
  • VB.Net初心者がDataGridViewのデータをExcelに書き込む方法について教えてください。
  • DataGridViewのデータを指定したファイル名でExcelに保存し、その後Excelファイルを開く方法を教えてください。
  • VB.NetのDataGridViewで表示されているデータをExcelファイルに書き込む方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • crowswork
  • ベストアンサー率63% (7/11)
回答No.1

Excel COMオブジェクトを使用することが必要になってくるかと思います。 DataGridViewのデータを1データづつ抽出し、Excelのセルへ貼り付けていくことになると思います。

参考URL:
http://kchon.blog111.fc2.com/blog-entry-55.html
10071007
質問者

お礼

crowsworkさんありがとうございます。 指摘のURLを見て下記のようにしました。 ' ----------------------------------------------------------- ' DataGridViewをEXCELに出力するサンプル(VB.NET/VS2005) ' Excelを参照設定する必要があります ' [参照の追加],[COM],[Microsoft Excel *.* Object Library] ' Imports Microsoft.Office.Interop (必要) ' Imports System.Runtime.InteropServices (必要) 参照設定をしました。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' EXCEL起動 Dim objExcel As Excel.Application = Nothing Dim objWorkBook As Excel.Workbook = Nothing objExcel = New Excel.Application objWorkBook = objExcel.Workbooks.Add ' DataGridViewのセルのデータ取得 Dim v As String(,) = New String( _ 稟議処理作成者_STDataGridView.Rows.Count - 1, 稟議処理作成者_STDataGridView.Columns.Count - 1) {} For r As Integer = 0 To 稟議処理作成者_STDataGridView.Rows.Count - 1 For c As Integer = 0 To 稟議処理作成者_STDataGridView.Columns.Count - 1 Dim dt As String = "" If 稟議処理作成者_STDataGridView.Rows(r).Cells(c).Value _ Is Nothing = False Then dt = 稟議処理作成者_STDataGridView.Rows(r).Cells(c).Value.ToString() End If v(r, c) = dt Next Next ' EXCELにデータ転送 Dim ran As String = "A1:" & _ Chr(Asc("A") + 稟議処理作成者_STDataGridView.Columns.Count - 1) & 稟議処理作成者_STDataGridView.Rows.Count objWorkBook.Sheets(1).Range(ran) = v ' エクセル表示 objExcel.Visible = True ' EXCEL解放 Marshal.ReleaseComObject(objWorkBook) <--ここでエラー Marshal.ReleaseComObject(objExcel) objWorkBook = Nothing objExcel = Nothing End Sub と書きました。 すると下記の所でエラー表示されます。 Marshal 内容は 名前"Marshal"は宣言されていません。 です。 すいませんが VB.Net全くの初心者です。 続けて教えていただけませんでしょうか。 ちなみにURLでは ボタンを押したイベントでなく Public Sub SaveExcel() で書かれていました。 よろしくお願いいたします。

その他の回答 (1)

  • crowswork
  • ベストアンサー率63% (7/11)
回答No.2

>' [参照の追加],[COM],[Microsoft Excel *.* Object Library] > ' Imports Microsoft.Office.Interop (必要) > ' Imports System.Runtime.InteropServices (必要) > >参照設定をしました。 ⇒参照設定は上記ExcelのCOMオブジェクトだけでなく、OfficeのCOMオブジェクトも必要になってくるかと思います。 >' EXCEL解放 >Marshal.ReleaseComObject(objWorkBook) <--ここでエラー ⇒エラーの内容から察するに(必要)と記載されている上記のコメント文をImports宣言されていないのではないでしょうか? できましたら、エラーが出た箇所は何を実行しようとしているのかをご自身で調べられた方が覚えられるかと思います。 あと、前回と今回の参考URLのどちらにも記載されていませんが、SheetやRangeまたはCellsなども変更として宣言し、Booksなどと同様にCOMオブジェクトを開放してあげる必要があります。 *Excel COMオブジェクト などのキーワードで検索をすればいっぱい出てくると思いますよ。

参考URL:
http://blogs.timberlandchapel.com/blogs/timberlandchapel/articles/1149.aspx

関連するQ&A

専門家に質問してみよう