一般的な Excel の制御です。Word や Access でも、基本は同じです。
Const xlCenter = -4108 Const xlDown = -4121 Dim EXCEL As Object On Error Resume Next Set EXCEL = CreateObject("Excel.Application") EXCEL.ScreenUpdating = False ' Excelのウィンドウサイズを最大化 EXCEL.Application.WindowState = 3 ' 新規ブックを作成 EXCEL.Workbooks.Add ' セルに値を埋める EXCEL.Cells(1, 1) = 1 ' A1 EXCEL.Cells(1, 2) = "北海道" ' B1 EXCEL.Cells(2, 1) = 2 ' A2 EXCEL.Cells(2, 2) = "東京都" ' B2 ' 1行目に行を挿入 EXCEL.Rows(1).Insert Shift:=xlDown EXCEL.Cells(1, 1) = "No." EXCEL.Cells(1, 2) = "都道府県" EXCEL.Rows(1).HorizontalAlignment = xlCenter ' 列幅をそろえる EXCEL.Columns(1).EntireColumn.AutoFit EXCEL.Columns(2).EntireColumn.AutoFit ' セルA1をアクティブにする EXCEL.Range("A1").Select ' 表示の更新を再開させる EXCEL.ScreenUpdating = True ' 表示する EXCEL.Visible = True Set EXCEL = Nothing
まず、Set EXCEL = CreateObject(“Excel.Application”) で Excel を起動させるのですが、 起動した直後の Excel の状態はウィンドウが表示されておらず、新規ブックもありません。Excel の親ウィンドウが非表示の状態で起動されます。
ですから新規ブックを作成するか、既存のブックを開かなければなりません。また、処理終了までには Excel を表示させなければなりません。
早いうちにウィンドウを表示させると制御操作の様子を見ることができますが、処理終了までに時間がかかります。処理時間を短縮させたいなら、表示は最後にしたほうが良いでしょう。さらに、ScreenUpdating プロパティを False にすることで表示更新を止めて処理速度を向上させることができます。
Excel オブジェクトを作成してから破棄するまでのコードは Excel VBA です。 Excel で[マクロの記録]で操作手順を記録し、VBA を貼り付けて加工することで簡単に VB にコードを埋め込めます。
ただし、実行速度は期待できません。より高速に動作するよう、コードの修正が必要になります。