HOME > 即効テクニック > AccessVBA > コーディング・デバッグ > ActiveXオブジェクトを操作する (CreateObject関数)

即効テクニック

コーディング・デバッグ

ActiveXオブジェクトを操作する (CreateObject関数)

(Access 97)
●概要●
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")