サイトについて      連絡先   検索

VBA CreateObject 関数

はじめに

Excel VBA マクロの CreateObject 関数を紹介します。

CreateObject 関数は、ActiveX オブジェクトの参照を作成して返します。

VBA の参照設定をしないで ActiveX オブジェクト (FileSystemObject など) を使用したいときに使用します。

  • 目次
    • 構文
    • 解説
    • 使用例

構文

CreateObject(オブジェクト)
オブジェクトのインスタンスを作成します。

引数「オブジェクト」「アプリケーション名.クラス名」の形式で名前を指定します。
戻り値の型Object 型

解説

参照設定」しない状態でもオブジェクトをインスタンス化できます。

取得したオブジェクトを使い終わったら、必ず Nothing を設定します。これを忘れるとオブジェクトが解放されなくなりメモリに残り続けることになります。

Dim o As Object
Set o = CreateObject("Hoge.Hoge") ' インスタンス化

' オブジェクトを使った処理

Set o = Nothing ' 最後に必ず Nothing を設定する

引数「オブジェクト」にはアプリケーション名.クラス名の形式で名前を入力します。具体的な名前は、使いたいオブジェクトの名前を Web で検索すれば見つけられます。

例えば「FileSystemObject オブジェクト」にCreateObject("Scripting.FileSystemObject")のように記載されています。

引数「オブジェクト」に不明な名前を指定するとエラーが発生します。

ActiveX のバージョン毎に参照設定が異なるとき、CreateObject 関数では自動で使用可能なバージョンのオブジェクトを作成します。アプリケーション名.クラス名が同じ名前のため。

ActiveX オブジェクトを使用すると VBA の機能を拡張できます。例えば FileSystemObject を作成すると高機能なファイル操作が可能になります。

使用例


Dim fso As Object
' FileSystemObject をインスタンス化する
Set fso = CreateObject("Scripting.FileSystemObject")

' FileSystemObject を使った処理
If fso.FileExists("C:\HogeHoge") = True Then

End If

Set fso = Nothing ' 最後に必ず Nothing を設定する

必ずメモリを解放するための方法。エラーをキャッチして正常なときでもエラーの時でも、Finally の処理を実行するようにしています。


On Error GoTo Catch
    Dim o As Object
    Set o = CreateObject("Scripting.FileSystemObject")

Finally:
    ' 正常なときでもエラーのときでもこの処理が実行される
    Set o = Nothing ' 必ず Nothing を設定する
    Exit Sub        ' Sub 関数のとき
    Exit Function   ' Function 関数のとき
    
Catch:
    ' エラー処理
    GoTo Finally
  • 目次
    • 構文
    • 解説
    • 使用例