ActiveXオブジェクトを操作する (CreateObject関数)
  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")

Access97/2000



戻る


Excel Word Access VBA! モーグ