VB.NETからExcelファイルを作成する方法について説明する。
VB.NETからExcelを利用するには、以下の手順が必要となる。
【事前準備(参照設定の追加)】
1.メニューバーから[プロジェクト]-[参照の追加]を選択する。
2.[.COM]タブを選択し、以下のライブラリを選択する。
「Microsoft Excel x.x Object Library」
※ x.xの部分は、バージョンを表す。
インストールしているExcelのバージョンによって異なる。
3.[OK]ボタンを押す。
以下、サンプル。
VB.NETからExcelを利用するには、以下の手順が必要となる。
【事前準備(参照設定の追加)】
1.メニューバーから[プロジェクト]-[参照の追加]を選択する。
2.[.COM]タブを選択し、以下のライブラリを選択する。
「Microsoft Excel x.x Object Library」
※ x.xの部分は、バージョンを表す。
インストールしているExcelのバージョンによって異なる。
3.[OK]ボタンを押す。
以下、サンプル。
Imports Excel = Microsoft.Office.Interop.Excel
Public Class Form1
Inherits System.Windows.Forms.Form
:(中略)
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Try
'Excelオブジェクト
Dim oExcel As New Excel.ApplicationClass
'WorkBookオブジェクト
Dim oBook As Excel.WorkbookClass
Dim oSheet As Excel.Worksheet
'Excelを非表示にする
oExcel.Application.Visible = False
oBook = oExcel.Workbooks.Add()
oSheet = oBook.Worksheets(1)
'A1, B1に数値を設定
oSheet.Cells(1, 1) = 2
oSheet.Cells(1, 2) = 3
'C1セルに計算式を設定
oSheet.Cells(1, 3) = "=A1+B1"
'D1セルに集計関数を利用した計算式を設定
oSheet.Cells(1, 4) = "=SUM(A1:B1)"
'A2セルに"test"を設定
oSheet.Cells(2, 1) = "test"
'太字にする場合
oSheet.Range("A2").Font.Bold = True
'範囲指定で太字にする場合
'oSheet.Range("A1:A2").Font.Bold = True
'罫線の描画
oSheet.Cells(3, 1) = "罫線の描画"
With oSheet.Range("A4:D5")
'セルの上側の罫線
.Borders(Excel.XlBordersIndex.xlEdgeTop).LineStyle = 1
'セルの左側の罫線
.Borders(Excel.XlBordersIndex.xlEdgeLeft).LineStyle = 1
'セルの右側の罫線
.Borders(Excel.XlBordersIndex.xlEdgeRight).LineStyle = 1
'セルの下側の罫線
.Borders(Excel.XlBordersIndex.xlEdgeBottom).LineStyle = 1
'複数セルを選択している場合、行間の罫線
.Borders _
(Excel.XlBordersIndex.xlInsideHorizontal).LineStyle = 1
'複数セルを選択している場合、列間の罫線
.Borders(Excel.XlBordersIndex.xlInsideVertical).LineStyle = 1
End With
'セルの結合
oSheet.Cells(6, 1) = "セルの結合"
oSheet.Range("A7:B7").MergeCells = True
'Excelを表示する
oExcel.Application.Visible = True
'シートの印刷プレビューを表示する
'印刷プレビューする場合には、Excelを表示した後に行うこと
oSheet.PrintPreview()
'ファイルを保存する
'Dim FilePath As String = "D:\Test.xls"
'oBook.SaveAs(FilePath, Excel.XlFileFormat.xlExcel8)
oBook.Close(False)
System.Runtime.InteropServices.Marshal.ReleaseComObject _
(oBook)
oBook = Nothing
oExcel.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject _
(oExcel)
oExcel = Nothing
'プレビューしない場合は、有効にする
'MessageBox.Show("Excelファイルを作成しました", "完了通知")
Catch ex As Exception
MessageBox.Show(ex.Message, "エラー", MessageBoxButtons.OK)
End Try
End Sub
End Class
【補足事項】
・Excel.ApplicationClass等、Excel.から始まる指定は、Imports宣言によるものである。
Imports Excel = Microsoft.Office.Interop.Excel
→ この宣言で"Excel"という名前が、"Microsoft.Office.Interop.Excel"名前空間を指すことを定義している。
・Excel VBAで利用しているプロパティやメソッドとほぼ同様の操作が可能である。
→ 一部の機能(Selection等)が実装されていないので、注意すること!
・この方法では、プレビュー表示時に一瞬、Excelの通常の画面が表示されてしまう。
・データをExcelに出力して欲しいという要望は多々あるので、覚えておくと便利。
・罫線に指定するLineStyleは、指定する数値によって罫線の種類が変わる。
→1(実線)、2(点線)、3…となっている。
Public Class Form1
Inherits System.Windows.Forms.Form
:(中略)
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Try
'Excelオブジェクト
Dim oExcel As New Excel.ApplicationClass
'WorkBookオブジェクト
Dim oBook As Excel.WorkbookClass
Dim oSheet As Excel.Worksheet
'Excelを非表示にする
oExcel.Application.Visible = False
oBook = oExcel.Workbooks.Add()
oSheet = oBook.Worksheets(1)
'A1, B1に数値を設定
oSheet.Cells(1, 1) = 2
oSheet.Cells(1, 2) = 3
'C1セルに計算式を設定
oSheet.Cells(1, 3) = "=A1+B1"
'D1セルに集計関数を利用した計算式を設定
oSheet.Cells(1, 4) = "=SUM(A1:B1)"
'A2セルに"test"を設定
oSheet.Cells(2, 1) = "test"
'太字にする場合
oSheet.Range("A2").Font.Bold = True
'範囲指定で太字にする場合
'oSheet.Range("A1:A2").Font.Bold = True
'罫線の描画
oSheet.Cells(3, 1) = "罫線の描画"
With oSheet.Range("A4:D5")
'セルの上側の罫線
.Borders(Excel.XlBordersIndex.xlEdgeTop).LineStyle = 1
'セルの左側の罫線
.Borders(Excel.XlBordersIndex.xlEdgeLeft).LineStyle = 1
'セルの右側の罫線
.Borders(Excel.XlBordersIndex.xlEdgeRight).LineStyle = 1
'セルの下側の罫線
.Borders(Excel.XlBordersIndex.xlEdgeBottom).LineStyle = 1
'複数セルを選択している場合、行間の罫線
.Borders _
(Excel.XlBordersIndex.xlInsideHorizontal).LineStyle = 1
'複数セルを選択している場合、列間の罫線
.Borders(Excel.XlBordersIndex.xlInsideVertical).LineStyle = 1
End With
'セルの結合
oSheet.Cells(6, 1) = "セルの結合"
oSheet.Range("A7:B7").MergeCells = True
'Excelを表示する
oExcel.Application.Visible = True
'シートの印刷プレビューを表示する
'印刷プレビューする場合には、Excelを表示した後に行うこと
oSheet.PrintPreview()
'ファイルを保存する
'Dim FilePath As String = "D:\Test.xls"
'oBook.SaveAs(FilePath, Excel.XlFileFormat.xlExcel8)
oBook.Close(False)
System.Runtime.InteropServices.Marshal.ReleaseComObject _
(oBook)
oBook = Nothing
oExcel.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject _
(oExcel)
oExcel = Nothing
'プレビューしない場合は、有効にする
'MessageBox.Show("Excelファイルを作成しました", "完了通知")
Catch ex As Exception
MessageBox.Show(ex.Message, "エラー", MessageBoxButtons.OK)
End Try
End Sub
End Class
【補足事項】
・Excel.ApplicationClass等、Excel.から始まる指定は、Imports宣言によるものである。
Imports Excel = Microsoft.Office.Interop.Excel
→ この宣言で"Excel"という名前が、"Microsoft.Office.Interop.Excel"名前空間を指すことを定義している。
・Excel VBAで利用しているプロパティやメソッドとほぼ同様の操作が可能である。
→ 一部の機能(Selection等)が実装されていないので、注意すること!
・この方法では、プレビュー表示時に一瞬、Excelの通常の画面が表示されてしまう。
・データをExcelに出力して欲しいという要望は多々あるので、覚えておくと便利。
・罫線に指定するLineStyleは、指定する数値によって罫線の種類が変わる。
→1(実線)、2(点線)、3…となっている。
- カテゴリ:
- VB.NET
大変参考になりました。
ありがとうございます。