VB Excel操作テクニック.NET

VBでExcelを読込み、操作するテクニック集。貼付だけで機能するソースコードも公開。
二次元配列を複数のセルに一括出力する
二次元配列を複数のセルに一括出力する

二次元配列を複数のセルに一括出力する

範囲指定したセルに対し、
二次元配列に設定した値を一括で出力する方法です。

セル単位で指定する必要がないので、表イメージで出力する場合は
この方法のほうが圧倒的にパフォーマンスが上がります。

DataTableなどの値を一括で出力したい場合でも、
あらかじめ値を二次元配列に格納することで出力が可能です。

今回貼り付ける二次元配列は、以下のようなイメージです。
1行目は数値型、2行目は文字型、3行目は日付型
のように設定されています。

1  2.01 3.333
A B C
現在時刻
' 今回貼り付ける二次元配列
' 数値や文字が混在しても大丈夫なように、Object型で二次元配列を用意する
Dim str(,) As Object = {{1, 2.01, 3.333}, {"A", "B", "C"}, {Now, Nothing, String.Empty}}

' Excelアプリケーション
Dim xlApp As Application = Nothing

' ワークブック
Dim xlBooks As Workbooks = Nothing
Dim xlBook As Workbook = Nothing

' シート
Dim xlSheets As Sheets = Nothing
Dim xlSheet as WorkSheet = nothing

' Excelを開く
xlApp = New Application
xlBooks = xlApp.Workbooks
xlBook = xlBooks.Open('対象ファイルまでの完全パス')
xlSheets = xlBook.Worksheets
xlSheet = DirectCast(xlSheets(1), Worksheet)   ' 1シート目を操作対象に設定

Dim xlCells As Range = Nothing  ' 中継用セル
Dim rngFrom As Range = Nothing  ' 始点セル指定用
Dim rngTo As Range = Nothing    ' 終点セル指定用
Dim rngTarget As Range = Nothing ' 貼付け範囲指定用

' 対象シートのセル
xlCells = xlSheet.Cells

' 始点セル
rngFrom = DirectCast(xlCells(1, 1), Range)

' 終点セル
rngTo = DirectCast(xlCells(3, 3), Range)

' 貼り付け範囲作成
rngTarget = xlSheet.Range(rngFrom, rngTo)

' 配列を張り付け
rngTarget.Value = str

' Excelを表示して5秒間表示
xlApp.Visible = True
System.Threading.Thread.Sleep(5000)

' ※COMオブジェクトの解放をお忘れなく
'


« »