Suche…


Bemerkungen

Im einfachsten CreateObject erstellt CreateObject eine Instanz eines Objekts, während GetObject eine vorhandene Instanz eines Objekts GetObject . Die Bestimmung, ob ein Objekt erstellt oder abgerufen werden kann, hängt von seiner Instanzeigenschaft ab . Einige Objekte sind SingleUse (z. B. WMI) und können nicht erstellt werden, wenn sie bereits vorhanden sind. Andere Objekte (z. B. Excel) sind MultiUse und ermöglichen die gleichzeitige Ausführung mehrerer Instanzen. Wenn eine Instanz eines Objekts noch nicht vorhanden ist und Sie GetObject versuchen, erhalten Sie die folgende abfangbare Meldung: Run-time error '429': ActiveX component can't create object .

Für GetObject muss mindestens einer dieser beiden optionalen Parameter vorhanden sein:

  1. Pfadname - Variante (String): Der vollständige Pfad (einschließlich Dateiname) der Datei, die das Objekt enthält. Dieser Parameter ist optional, aber Class ist erforderlich, wenn Pfadname weggelassen wird.
  2. Class - Variant (String): Ein String, der die formale Definition (Application und ObjectType) des Objekts darstellt. Klasse ist erforderlich, wenn Pfadname weggelassen wird.

CreateObject hat einen erforderlichen Parameter und einen optionalen Parameter:

  1. Class - Variant (String): Ein String, der die formale Definition (Application und ObjectType) des Objekts darstellt. Klasse ist ein erforderlicher Parameter.
  2. Servername - Variant (String): Der Name des Remote-Computers, auf dem das Objekt erstellt wird. Wenn nicht angegeben, wird das Objekt auf dem lokalen Computer erstellt.

Class besteht immer aus zwei Teilen in Form von Application.ObjectType :

  1. Anwendung - Der Name der Anwendung, zu der das Objekt gehört. |
  2. Objekttyp - Der Typ des Objekts erstellt wird. |

Einige Beispielklassen sind:

  1. Word.Anwendung
  2. Excel-Tabelle
  3. Scripting.FileSystemObject

Demonstration von GetObject und CreateObject

MSDN-GetObject-Funktion

Gibt eine Referenz auf ein Objekt zurück, das von einer ActiveX-Komponente bereitgestellt wird.

Verwenden Sie die GetObject-Funktion, wenn eine aktuelle Instanz des Objekts vorhanden ist oder wenn Sie das Objekt mit einer bereits geladenen Datei erstellen möchten. Wenn keine aktuelle Instanz vorhanden ist und das Objekt nicht mit einer geladenen Datei gestartet werden soll, verwenden Sie die Funktion 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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow