たま氏の覚え書き

KNIME・AccessVBA・Swift等、学習したことを覚え書き

AccessVBA_Microsoft Libraryその2【オートメーション】Excelとの連携

オートメーション(旧:OLEオートメーション)とは何か、Excelとの連携

オートメーションの利用

Accessと別のアプリケーションの間で、オブジェクトをやり取りするための規格(業界標準テクノロジ)を使用し
他のアプリケーションにおける操作をAccessで制御する

※操作対象のアプリの情報(オブジェクトの構造やプロパティ・メソッド)は、Accessのヘルプには掲載されていない

▼読むと余計に混乱する解説▼
https://learn.microsoft.com/ja-jp/office/vba/language/concepts/getting-started/understanding-automation

▼用語▼
オートメーションサーバ_情報を他のアプリケーションに公開する側のアプリ
オートメーションクライアント_他のアプリケーションを制御する側のアプリ

Excelと連携

Excelを、Accessから操作する
この場合、オートメーションサーバがExcel、オートメーションクライアントがAccessとなる

事前バインディングで参照

参照設定で「Microsoft Excel (バージョン) Object Library」を選択

書式その1:
Dim オブジェクト変数 As Excel.Application
Set オブジェクト変数 = New Excel.Application

書式その2:
Dim オブジェクト変数 As New Excel.Application

▼記述例▼

    Dim ExcelInfo As New Excel.Application


実行時(遅延)バインディングで参照

書式:
Dim オブジェクト変数 As Object
Set オブジェクト変数 = CreateObject(Excel.Application)

▼記述例▼

    Dim ExcelInfo As Object
    Set ExcelInfo = CreateObject(Excel.Application)


Excel.Application】のプロパティ

Visible Excelを開くかどうかをTrue/Falseで指定
AcrtiveSheet 指定したブックの一番手前のシートを指定

Excel.Application】のメソッド

workbooks.open workbookコレクションのopenメソッドでExcelを開く
 →詳しくは以下のサイトで確認
 ▼よくわかる詳細情報▼
 Office TANAKA - ファイルの操作[ブックを開く]

Quit Excelを閉じる

【実践】Excelの表の記述例

事前に準備してAccessと同じ場所に保存したExcel「Diary.xlsx」ファイルの中身を読み取り、イミディエイトウィンドウに表示する

▼記述例▼

Sub test_Excel()

    Dim ExcelInfo As New Excel.Application
    Dim t_WorkBook As Workbook
    Dim ExcelVal As Variant, tempVal As Variant
    Dim i As Long, writeVal As String
    
    ExcelInfo.Visible = True 'Excelを起動
    Set t_WorkBook = ExcelInfo.workbooks.Open(CurrentProject.Path & "\Diary.xlsx") 'インスタンス生成、拡張子は不要
    ExcelVal = t_WorkBook.activesheet.usedrange 'Excelを保存した際にアクティブにしていたシートが参照対象となる
    For Each tempVal In ExcelVal
        i = i + 1
        If i Mod 3 <> 0 Then
            writeVal = writeVal + tempVal
        Else
            writeVal = writeVal + tempVal + vbCrLf
        End If
    Next
    
    Debug.Print writeVal
    Set t_WorkBook = Nothing
    Set ExcelInfo = Nothing

End Sub


▼処理結果▼


▼引用元Excel