サーチ…


備考

CreateObjectはオブジェクトのインスタンスを作成するのが最も簡単GetObjectが、 GetObjectはオブジェクトの既存のインスタンスを取得します。オブジェクトの作成または取得の可否の決定は、インスタンス化プロパティによって異なります 。一部のオブジェクトはSingleUse(例:WMI)で、すでに存在する場合は作成できません。他のオブジェクト(Excelなど)はMultiUseであり、複数のインスタンスを一度に実行できます。オブジェクトのインスタンスが存在せずGetObjectを実行しようとすると、次のトラップ可能なメッセージが表示されます。 Run-time error '429': ActiveX component can't create object

GetObjectには、次の2つのオプションパラメータの少なくとも1つが必要です。

  1. Pathname - Variant(String):オブジェクトを含むファイルのフルパス(filenameを含む)。このパラメータはオプションですが、 Pathnameが省略されている場合はClassが必要です。
  2. Class - Variant(String):オブジェクトの正式な定義(ApplicationおよびObjectType)を表す文字列。 Pathnameを省略すると、 クラスが必要です。

CreateObjectには、1つの必須パラメータと1つのオプションパラメータがあります。

  1. Class - Variant(String):オブジェクトの正式な定義(ApplicationおよびObjectType)を表す文字列。 クラスは必須パラメータです。
  2. Servername - Variant(String):オブジェクトが作成されるリモートコンピュータの名前。省略した場合、オブジェクトはローカルマシン上に作成されます。

クラスは常にApplication.ObjectTypeの形式で2つの部分で構成されていApplication.ObjectType

  1. アプリケーション - オブジェクトが含まれているアプリケーションの名前。 |
  2. Object Type - 作成されるオブジェクトのタイプ 。 |

いくつかのクラスの例は次のとおりです。

  1. Word.Application
  2. Excel.Sheet
  3. Scripting.FileSystemObject

GetObjectとCreateObjectのデモンストレーション

MSDN-GetObject関数

ActiveXコンポーネントによって提供されるオブジェクトへの参照を返します。

オブジェクトの現在のインスタンスがある場合、または既にロードされたファイルを使用してオブジェクトを作成する場合は、GetObject関数を使用します。現在のインスタンスがなく、ファイルをロードしてオブジェクトを開始したくない場合は、CreateObject関数を使用します。

Sub CreateVSGet()
    Dim ThisXLApp As Excel.Application 'An example of early binding
    Dim AnotherXLApp As Object 'An example of late binding
    Dim ThisNewWB As Workbook
    Dim AnotherNewWB As Workbook
    Dim wb As Workbook
    
    'Get this instance of Excel
    Set ThisXLApp = GetObject(ThisWorkbook.Name).Application
    'Create another instance of Excel
    Set AnotherXLApp = CreateObject("Excel.Application")
    'Make the 2nd instance visible
    AnotherXLApp.Visible = True
    'Add a workbook to the 2nd instance
    Set AnotherNewWB = AnotherXLApp.Workbooks.Add
    'Add a sheet to the 2nd instance
    AnotherNewWB.Sheets.Add
    
    'You should now have 2 instances of Excel open
    'The 1st instance has 1 workbook: Book1
    'The 2nd instance has 1 workbook: Book2
    
    'Lets add another workbook to our 1st instance
    Set ThisNewWB = ThisXLApp.Workbooks.Add
    'Now loop through the workbooks and show their names
    For Each wb In ThisXLApp.Workbooks
        Debug.Print wb.Name
    Next
    'Now the 1st instance has 2 workbooks: Book1 and Book3
    'If you close the first instance of Excel,
    'Book1 and Book3 will close, but book2 will still be open
    
End Sub


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow