セルの入力
セルに文字を入力するには、下記のように記述します。
Dim AppExcel As Excel.Application
Set AppExcel = New Excel.Application
AppExcel.Workbooks.Add 'ブックを新規追加
AppExcel.Visible = True '表示
'10 * 10 のセルに i * j の結果を記入
For i = 1 To 10
For j = 1 To 10
AppExcel.Cells(i, j) = i * j
Next j
Next i
'セルを全選択
AppExcel.Cells.Select
'セルの幅を自動調整
AppExcel.Cells.EntireColumn.AutoFit
'セルA1を選択
AppExcel.Range("A1").Select
Set AppExcel = New Excel.Application
AppExcel.Workbooks.Add 'ブックを新規追加
AppExcel.Visible = True '表示
'10 * 10 のセルに i * j の結果を記入
For i = 1 To 10
For j = 1 To 10
AppExcel.Cells(i, j) = i * j
Next j
Next i
'セルを全選択
AppExcel.Cells.Select
'セルの幅を自動調整
AppExcel.Cells.EntireColumn.AutoFit
'セルA1を選択
AppExcel.Range("A1").Select
セルの入力(レスポンス向上)
基本は上記のように記載しますが、データのI/Oはレスポンスに非常に負荷が掛かります。負荷を軽減するには、I/Oの処理を極力抑える事が望ましいです。
そこで、i * j の処理結果を 変数(配列)にセットし、纏めてセルへ入力します。(※ 赤字箇所が変更内容です)
Dim AppExcel As Excel.Application
Dim ExcelData() As Variant
Set AppExcel = New Excel.Application
AppExcel.Workbooks.Add 'ブックを新規追加
AppExcel.Visible = True '表示
ReDim ExcelData(10, 10)
'10 * 10 のセルに i * j の結果を記入
For i = 1 To 10
For j = 1 To 10
'セルは開始位置(1, 1)に対し、変数は(0, 0)のため注意
ExcelData(i - 1, j - 1) = i * j
Next j
Next i
AppExcel.Range(AppExcel.Cells(1, 1), AppExcel.Cells(10, 10)) = ExcelData
'セルを全選択
AppExcel.Cells.Select
'セルの幅を自動調整
AppExcel.Cells.EntireColumn.AutoFit
'セルA1を選択
AppExcel.Range("A1").Select
Dim ExcelData() As Variant
Set AppExcel = New Excel.Application
AppExcel.Workbooks.Add 'ブックを新規追加
AppExcel.Visible = True '表示
ReDim ExcelData(10, 10)
'10 * 10 のセルに i * j の結果を記入
For i = 1 To 10
For j = 1 To 10
'セルは開始位置(1, 1)に対し、変数は(0, 0)のため注意
ExcelData(i - 1, j - 1) = i * j
Next j
Next i
AppExcel.Range(AppExcel.Cells(1, 1), AppExcel.Cells(10, 10)) = ExcelData
'セルを全選択
AppExcel.Cells.Select
'セルの幅を自動調整
AppExcel.Cells.EntireColumn.AutoFit
'セルA1を選択
AppExcel.Range("A1").Select
上記例では、分かりやすいように 具体的な数値 (10, 10) で設定しましたが、変数化すると柔軟になります。
ちなみに、レスポンスの比較で、10 * 10 程度では顕著な差は出ませんが、1000 * 100とすると、下記のようにレスポンスの差が歴然とします。
処理方法 | 秒数 |
---|---|
直接入力 | 48秒 |
変数[配列]入力 | 1秒未満 |