範囲指定したセルに対し、
二次元配列に設定した値を一括で出力する方法です。
セル単位で指定する必要がないので、表イメージで出力する場合は
この方法のほうが圧倒的にパフォーマンスが上がります。
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オブジェクトの解放をお忘れなく '