宮崎県延岡市 | スマイルカラーソフトウェア | ユーザースタイルに合わせたプログラミングでお客様に幸せをお届けします。

Excel を起動、制御する

一般的な 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 にコードを埋め込めます。
ただし、実行速度は期待できません。より高速に動作するよう、コードの修正が必要になります。