VBAから他のActiveXオートメーションオブジェクトを参照するには、いくつ
かの方法が用意されています。
今回はクラス名から参照を設定するCreateObject関数を説明します。
● 準備 ●
新規標準モジュールを作成し、以下のプロシージャを記述して下さい。
● サンプル ●
Private Sub ControlComObj()
Dim appAC As Access.Application
'新しいAccessを起動する
Set appAC = CreateObject("Access.Application")
'新しいAccessを表示する
appAC.Visible = True
MsgBox appAC.Name & vbCrLf & "を起動しました"
'新しいAccessを終了する
appAC.Quit
Set appAC = Nothing
End Sub
● 詳細 ●
CreateObject関数は「CreateObject(Class, [ServerName])」
Class 作成するオブジェクトのクラス名を指定します。
「AppName.ObjectType」という形で指定します。
ServerName オブジェクトを保存するネットワークサーバを指定します。
省略可能です。
主だったアプリケーションのクラス名を紹介しましょう。
---------------------------------------------------------------------
アプリケーション名 オブジェクトの種類 クラス名
---------------------------------------------------------------------
Access Application Access.Application
CurrentData Access.CodeData
Access.CurrentData
CurrentProject Access.CodeProject
Access.CurrentProject
---------------------------------------------------------------------
Excel Application Excel.Application
WorkBook Excel.WorkBook
Excel.Chart
Excel.Sheet
---------------------------------------------------------------------
Word Application Word.Application
Document Word.Document
Grobal Word.Grobal
---------------------------------------------------------------------
PowerPoint Application PowerPoint.Application
---------------------------------------------------------------------
Outlook Application Outlook.Application
---------------------------------------------------------------------
※ 複数のバージョンのOffice製品が混在している環境では、必ずクラス名の
最後にバージョン番号を付けて下さい。
例) Access.Application.9 (Access2000)
Access.Application.8 (Access97)
複数のインスタンスを作成できないオブジェクトの場合は、CreateObject関
数を繰り返し実行しても、そのオブジェクトのインスタンスは 1 つしか作成さ
れません。
この関数を使用して新しいオブジェクトのインスタンスを変数に代入する場
合、総称Object型の変数を使用することも出来ますが、出来るだけ事前参照し
た適切な型(例:Excel.Application)を使用するようにしましょう
(別掲 「タイプライブラリのGUIDやバージョンを取得する」参照)
● 補足説明 ●
CreateObject関数は常に対象オブジェクトの新しいインスタンスを作
成しますので、すでに起動しているアプリケーションのインスタンスを取得し
たい時にはGetObject関数を使用するようにして下さい。
さらにNewキーワードを明示的に宣言することで新規インスタンスを作成する
方法もあります。
例1) Dim objXL As New Excel.Application
例2) Dim objXL As Excel.Application
Set objXL = New CreateObject("Excel.Application")
|