オートメーション(旧:OLEオートメーション)とは何か、Excelとの連携 Accessと別のアプリケーションの間で、オブジェクトをやり取りするための規格(業界標準テクノロジ)を使用し ▼読むと余計に混乱する解説▼ ▼用語▼ Excelを、Accessから操作する 参照設定で「Microsoft Excel (バージョン) Object Library」を選択 書式その1: 書式その2: ▼記述例▼ 書式: ▼記述例▼ ・Visible Excelを開くかどうかをTrue/Falseで指定 ・workbooks.open workbookコレクションのopenメソッドでExcelを開く ・Quit Excelを閉じる 事前に準備してAccessと同じ場所に保存したExcel「Diary.xlsx」ファイルの中身を読み取り、イミディエイトウィンドウに表示する ▼記述例▼
オートメーションの利用
他のアプリケーションにおける操作をAccessで制御する
※操作対象のアプリの情報(オブジェクトの構造やプロパティ・メソッド)は、Accessのヘルプには掲載されていない
https://learn.microsoft.com/ja-jp/office/vba/language/concepts/getting-started/understanding-automation
オートメーションサーバ_情報を他のアプリケーションに公開する側のアプリ
オートメーションクライアント_他のアプリケーションを制御する側のアプリExcelと連携
この場合、オートメーションサーバがExcel、オートメーションクライアントがAccessとなる事前バインディングで参照
Dim オブジェクト変数 As Excel.Application
Set オブジェクト変数 = New Excel.Application
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】のプロパティ
・AcrtiveSheet 指定したブックの一番手前のシートを指定【Excel.Application】のメソッド
→詳しくは以下のサイトで確認
▼よくわかる詳細情報▼
Office TANAKA - ファイルの操作[ブックを開く]【実践】Excelの表の記述例
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▼