Sök…


Anmärkningar

På det enklaste skapar CreateObject en instans av ett objekt medan GetObject får en existerande instans av ett objekt. Att bestämma om ett objekt kan skapas eller fås beror på egenskapen Instancing . Vissa objekt är SingleUse (t.ex. WMI) och kan inte skapas om de redan finns. Andra objekt (t.ex. Excel) är MultiUse och tillåter flera instanser att köras samtidigt. Om en förekomst av ett objekt inte redan existerar och du försöker GetObject får du följande fällbara meddelande: Run-time error '429': ActiveX component can't create object .

GetObject kräver att minst en av dessa två valfria parametrar är närvarande:

  1. Pathname - Variant (String): Hela sökvägen, inklusive filnamn, för filen som innehåller objektet. Denna parameter är valfri, men klass krävs om sökväg utelämnas.
  2. Klass - Variant (String): En sträng som representerar den formella definitionen (Application and ObjectType) av objektet. Klass krävs om sökväg utelämnas.

CreateObject har en nödvändig parameter och en valfri parameter:

  1. Klass - Variant (String): En sträng som representerar den formella definitionen (Application and ObjectType) av objektet. Klass är en obligatorisk parameter.
  2. Servername - Variant (String): Namnet på fjärrdatorn som objektet skapas på. Om utelämnas skapas objektet på den lokala maskinen.

Klassen består alltid av två delar i form av Application.ObjectType :

  1. Applikation - Namnet på applikationen som objektet är en del av. |
  2. Objekttyp - Typen av objekt som skapas. |

Några exempelklasser är:

  1. Word.Application
  2. Exelblad
  3. Scripting.FileSystemObject

Demonstrera GetObject och CreateObject

MSDN-GetObject-funktion

Returnerar en referens till ett objekt som tillhandahålls av en ActiveX-komponent.

Använd GetObject-funktionen när det finns en aktuell instans av objektet eller om du vill skapa objektet med en fil som redan har laddats. Om det inte finns någon aktuell instans och du inte vill att objektet ska startas med en fil laddad använder du CreateObject-funktionen.

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow