VB6・VBA関数メモ:CreateObject関数

CreateObject関数についてメモしておきます。

この関数はCOMオブジェクトの参照を生成する際に使用します。
参照設定されていないクラスでも使用できます。(レジストリに登録されている必要はありますが)
参照設定されているときに使えるNewと同様の処理が行われます。

参照設定ができる場合はNewを使った方が便利(メソッドやプロパティの候補が出る)かとは思いますが、
事情により参照設定が出来ない場合はCreateObjectを使った方が便利かと思います。
(私は必要なOCXが存在しないPCでコーディングしたことがあります;)

なお、使用後は変数にNothingを代入して解放する必要があります。


概要

CreateObject(Class As String, [ServerName As String])
機能 COMオブジェクトへの参照を作成して返す
引数 Class オブジェクトのアプリケーション(プロジェクト)名とクラス名
(「アプリケーション名.クラス名」のように指定)
String型
ServerName (省略時は空文字)
ネットワークサーバ名
String型
戻り値 COMオブジェクト (Object型)


使用例

説明 記述例 出力
Excelのオブジェクトを生成
Dim excel As Object

Set excel = CreateObject("Excel.Application")
Debug.Print excel.Name

Set excel = Nothing
Microsoft Excel
Newで処理しても同様
Dim excel As Excel.Application

Set excel = New Excel.Application
Debug.Print excel.Name

Set excel = Nothing
Microsoft Excel
¥¥ServerのCOMオブジェクトを参照
Dim excel As Object

Set excel = CreateObject("Excel.Application", "Server")
Debug.Print excel.Name

Set excel = Nothing
Microsoft Excel


動作検証

説明 記述例 出力
指定のクラス・アプリケーションが存在しないはエラー
On Error GoTo ERR_HANDLER

    Dim obj As Object
    
    Set obj = CreateObject("")

ERR_HANDLER:
    
    Set obj = Nothing

    If Err > 0 Then Debug.Print Error
ActiveX コンポーネントはオブジェクトを作成できません。
ネットワークサーバが存在しないはエラー
On Error GoTo ERR_HANDLER

    Dim obj As Object

    Set obj = CreateObject("excel.Application", "NoExists")

ERR_HANDLER:
    
    Set obj = Nothing

    If Err > 0 Then Debug.Print Error
リモート サーバーがないか、使用できる状態ではありません。


コメント
コメントする








    
この記事のトラックバックURL
トラックバック