Zoeken…


Opmerkingen

In het eenvoudigste geval maakt CreateObject een instantie van een object, terwijl GetObject een bestaande instantie van een object krijgt. Bepalen of een object kan worden gemaakt of verkregen, is afhankelijk van de eigenschap Instancing . Sommige objecten zijn SingleUse (bijv. WMI) en kunnen niet worden gemaakt als ze al bestaan. Andere objecten (bijvoorbeeld Excel) zijn MultiUse en kunnen meerdere exemplaren tegelijk worden uitgevoerd. Als een exemplaar van een object nog niet bestaat en u GetObject probeert, ontvangt u het volgende trappable bericht: Run-time error '429': ActiveX component can't create object .

GetObject vereist dat ten minste een van deze twee optionele parameters aanwezig is:

  1. Padnaam - Variant (tekenreeks): het volledige pad, inclusief de bestandsnaam, van het bestand dat het object bevat. Deze parameter is optioneel, maar Klasse is vereist als Padnaam wordt weggelaten.
  2. Class - Variant (String): een tekenreeks die de formele definitie (Application en ObjectType) van het object vertegenwoordigt. Klasse is vereist als Padnaam wordt weggelaten.

CreateObject heeft één vereiste parameter en één optionele parameter:

  1. Class - Variant (String): een tekenreeks die de formele definitie (Application en ObjectType) van het object vertegenwoordigt. Klasse is een vereiste parameter.
  2. Servernaam - Variant (String): de naam van de externe computer waarop het object wordt gemaakt. Indien weggelaten, wordt het object op de lokale computer gemaakt.

Klasse bestaat altijd uit twee delen in de vorm van Application.ObjectType :

  1. Toepassing : de naam van de toepassing waarvan het object deel uitmaakt. |
  2. Objecttype - Het type object dat wordt gemaakt. |

Enkele voorbeeldklassen zijn:

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

GetObject en CreateObject demonstreren

MSDN-GetObject-functie

Retourneert een verwijzing naar een object van een ActiveX-component.

Gebruik de GetObject-functie wanneer er een huidige instantie van het object is of als u het object wilt maken met een bestand dat al is geladen. Als er geen huidige instantie is en u niet wilt dat het object wordt gestart met een geladen bestand, gebruikt u de functie 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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow