VB6・VBA関数メモ:GetObject関数

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

この関数は、ファイルパスからCOMオブジェクトの参照を作成したり、
既に起動中のCOMオブジェクトを取得する際に使用します。

第一引数のPathNameは省略時と空白("")指定時で処理が異なるので間違えないように…


概要

GetObject([PathName], [Class])
機能 COMオブジェクトへの参照への参照を返す
引数 PathName (省略可能)
取得するオブジェクトが含まれるファイルのパス
省略時は現在起動中のCOMオブジェクトの参照を取得
""を指定するとCOMオブジェクトの参照を作成
Variant型(String型)
Class (省略可能 ※PathName省略時は必須)
オブジェクトのアプリケーション(プロジェクト)名とクラス名
(「アプリケーション名.クラス名」のように指定)
Variant型(String型)
戻り値 COMオブジェクトへの参照 (Object型)


使用例

説明 記述例 出力
ファイルパスからオブジェクトの参照を取得
(例ではXLSファイルの参照オブジェクトを取得)
Dim obj  As Object
Dim path As String

path = "D:¥Sumple.xls"
Set obj = GetObject(path)

Debug.Print obj.Name
Debug.Print TypeName(obj)

obj.Close False
Set obj = Nothing
Sumple.xls
Workbook
既に起動しているCOMオブジェクトの参照を取得
(※例では起動中のExcelの参照オブジェクトを取得)
Dim obj As Object

Set obj = GetObject(, "Excel.Application")

Debug.Print obj.Name
Debug.Print TypeName(obj)

Set obj = Nothing
Microsoft Excel
Application
PathNameに空白("")を指定するとCOMオブジェクトの参照を作成
(CreateObjectと同様?)
Dim obj As Object

Set obj = GetObject("", "Excel.Application")

Debug.Print obj.Name
Debug.Print TypeName(obj)

Set obj = Nothing
Microsoft Excel
Application


動作検証

説明 記述例 出力
複数起動できないファイルで、既に読み込まれている場合は同じ参照を返す
Dim obj1 As Object
Dim obj2 As Object
Dim obj3 As Object
Dim path As String

path = "D:¥Sumple.xls"
Set obj1 = GetObject(path)
Debug.Print "1 : " & TypeName(obj1)

'obj1と同じ参照を取得
Set obj2 = GetObject(path)
Debug.Print "2 : " & TypeName(obj2)

'obj1,obj2と同じ参照を取得
Set obj3 = GetObject(path)
Debug.Print "3 : " & TypeName(obj3)

'同じ参照の為、1つCloseすれば3つとも閉じる
obj1.Close

Debug.Print "1 : " & TypeName(obj1)
Debug.Print "2 : " & TypeName(obj2)
Debug.Print "3 : " & TypeName(obj3)

Set obj1 = Nothing
Set obj2 = Nothing
Set obj3 = Nothing
1 : Sumple.xls
2 : Sumple.xls
3 : Sumple.xls
1 : Object
2 : Object
3 : Object
存在しないファイルやクラスを指定するとエラー
Dim obj As Object
Dim path As String

On Error Goto ERR_HANDLER

	path = "D:¥NoExists.xls"
	Set obj = GetObject(path)

ERR_HANDLER:
	If Err > 0 Then Debug.Print Error

Set obj = Nothing
オートメーションの操作中にファイル名またはクラス名を見つけられませんでした。


コメント
コメントする








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