GetObject, functie

Opmerking: De functie, de methode, het object of de eigenschap die wordt beschreven in dit onderwerp is uitgeschakeld als de Microsoft Jet Expression-service wordt uitgevoerd in de sandbox-modus. In deze modus wordt de evaluatie van mogelijk onveilige expressies voorkomen. Als u meer wilt weten over de sandbox-modus, zoekt u in de Help naar 'sandbox-modus'.

Retourneert een verwijzing naar een object dat wordt aangeboden door een ActiveX-component.

Syntaxis

GetObject([padnaam ] [, klasse ] )

De syntaxis van de functie GetObject bevat deze argumenten:

Argument

Beschrijving

padnaam

Optioneel. Variant (tekenreeks). Het volledige pad en de naam van het bestand met het object dat u wilt opvragen. Als padnaam wordt weggelaten, is klasse vereist.

klasse

Optioneel. Variant (tekenreeks). Een tekenreeks die de klasse van het object vertegenwoordigt.


Het klasse-argument gebruikt de syntaxis appnaam.objecttype en bestaat uit deze onderdelen:

Onderdeel

Beschrijving

appnaam

Vereist. Variant (tekenreeks). De naam van de toepassing die het object levert.

objecttype

Vereist. Variant (tekenreeks). Het type of de klasse van het object dat moet worden gemaakt.


Opmerkingen

Opmerking: In de volgende voorbeelden wordt het gebruik van deze functie in een VBA-module (Visual Basic for Applications) toegelicht. Meer informatie over het werken met VBA vindt u door in de vervolgkeuzelijst naast Zoeken de optie Referentie voor ontwikkelaars te selecteren en een of meer termen in het zoekvenster te typen.

Gebruik de functie GetObject om een ActiveX-object uit een bestand op te vragen en het object toe te wijzen aan een objectvariabele. Gebruik de instructie Set om het object dat het resultaat is van GetObject, toe te wijzen aan de objectvariabele. Bijvoorbeeld:

Dim CADObject As Object
Set CADObject = GetObject("C:\CAD\SCHEMA.CAD")

Wanneer deze code wordt uitgevoerd, wordt de toepassing gestart die is gekoppeld aan de opgegeven padnaam waarna het object in het opgegeven bestand wordt geactiveerd.

Als padnaam een tekenreeks met de lengte nul is (""), retourneert GetObject een nieuw objectexemplaar van het opgegeven type. Als het argument padnaam wordt weggelaten, retourneert GetObject een object van het opgegeven type dat momenteel actief is. Er treedt een fout op als er geen object van het opgegeven type bestaat.

Bij bepaalde toepassingen is het mogelijk om een deel van een bestand te activeren. Voeg een uitroepteken (!) toe aan het einde van de bestandsnaam en typt daarna de tekenreeks die het gedeelte van het bestand aangeeft dat u wilt activeren. Als u meer wilt weten over de samenstelling van deze tekenreeks, raadpleegt u de documentatie van de toepassing waarmee het object is gemaakt.

In een tekenprogramma kunt u bijvoorbeeld meerdere lagen van een tekening opslaan in een bestand. U kunt dan de volgende code gebruiken om de derde laag in de tekening SCHEMA.CAD te activeren:

Set LayerObject = GetObject("C:\CAD\SCHEMA.CAD!Layer3")

Als u de klasse van het object niet opgeeft, bepaalt Automatisering welke toepassing moet worden gestart en welk object moet worden geactiveerd, op basis van de naam van het bestand dat u opgeeft. Het is echter mogelijk dat sommige bestanden meer dan één klasse object ondersteunen. Een tekening kan bijvoorbeeld drie verschillende typen objecten ondersteunen: een Application-object, een Drawing-object en een Toolbar-object, die allemaal deel uitmaken van hetzelfde bestand. Als u wilt opgeven welk object in een bestand u wilt activeren, gebruikt u het optionele argument klasse. Bijvoorbeeld:

Dim MyObject As Object
Set MyObject = GetObject("C:\DRAWINGS\SAMPLE.DRW", _
"FIGMENT.DRAWING")

In het voorbeeld is FIGMENT de naam van een tekenprogramma en is DRAWING een van de objecttypen die worden ondersteund.

Wanneer een object is geactiveerd, kunt u er in code naar verwijzen met behulp van de objectvariabele die u hebt gedefinieerd. In het vorige voorbeeld vraagt u de eigenschappen en methoden van het nieuwe object op met behulp van de objectvariabele MyObject. Bijvoorbeeld:

MyObject.Line 9, 90
MyObject.InsertText 9, 100, "Hello, world."
MyObject.SaveAs "C:\DRAWINGS\SAMPLE.DRW"

Opmerking:  Gebruik de functie GetObject als er een actueel exemplaar van het object bestaat of als u het object wilt maken terwijl er al een bestand is geladen. Als er geen actueel exemplaar is, en u het object niet wilt maken terwijl er een bestand is geladen, gebruikt u de functie CreateObject.

Als een object zichzelf heeft geregistreerd als een object met één exemplaar, wordt er maar één exemplaar van het object gemaakt, ongeacht hoe vaak CreateObject wordt uitgevoerd. In het geval van een object met één exemplaar retourneert GetObject altijd hetzelfde exemplaar wanneer de functie wordt aangeroepen met een tekenreeks met de lengte nul (""). Er treedt dan een fout op als het argument padnaam wordt weggelaten. U kunt GetObject niet gebruiken voor het opvragen van een verwijzing naar een klasse die met Visual Basic is gemaakt.

Voorbeeld

In dit voorbeeld wordt de functie GetObject gebruikt om een verwijzing naar een specifiek werkblad van Microsoft Office Excel 2007 (MyXL) op te vragen. Via de eigenschap Application van het werkblad wordt Excel weergegeven, afgesloten, enzovoort. De Sub-procedure DetectExcel gebruikt twee API-aanroepen om Excel te zoeken. Als Excel actief is, wordt het programma toegevoegd aan de tabel Running Object. De eerste aanroep van GetObject veroorzaakt een fout als Microsoft Excel nog niet gestart. In het voorbeeld wordt in dat geval de vlag GetObject ingesteld op True. Met de tweede aanroep van GetObject wordt een bestand opgegeven dat moet worden geopend. Als Excel nog niet is gestart, gebeurt dit met de tweede oproep en wordt er daarna een verwijzing geretourneerd naar het werkblad dat wordt voorgesteld met het opgegeven bestand, mytest.xls. Het bestand moet aanwezig zijn op de opgegeven locatie, anders wordt de Visual Basic-fout Automatiseringsfout gegenereerd. Vervolgens wordt zowel Excel als het venster met het opgegeven werkblad weergegeven. Als er nog geen versie van Excel was gestart, wordt Excel afgesloten via de methode Quit van het Application-object. Als Excel al eerder was gestart, wordt er geen poging gedaan om het programma af te sluiten. De verwijzing zelf wordt vrijgegeven door deze in te stellen op Nothing.

' Declare necessary API routines:
Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName as String, _
ByVal lpWindowName As Long) As Long
Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hWnd as Long,ByVal wMsg as Long, _
ByVal wParam as Long, _
ByVal lParam As Long) As Long
Sub GetExcel()
Dim MyXL As Object ' Variable to hold reference
' to Microsoft Excel.
Dim ExcelWasNotRunning As Boolean ' Flag for final release.
' Test to see if there is a copy of Microsoft Excel already running.
On Error Resume Next ' Defer error trapping.
' GetObject function called without the first argument returns a
' reference to an instance of the application. If the application isn't
' running, an error occurs.
Set MyXL = GetObject(, "Excel.Application")
If Err.Number <> 0 Then ExcelWasNotRunning = True
Err.Clear ' Clear Err object in case error occurred.
' Check for Microsoft Excel. If Microsoft Excel is running,
' enter it into the Running Object table.
DetectExcel
' Set the object variable to reference the file you want to see.
Set MyXL = GetObject("c:\vb4\MYTEST.XLS")
' Show Microsoft Excel through its Application property. Then
' show the actual window containing the file using the Windows
' collection of the MyXL object reference.
MyXL.Application.Visible = True
MyXL.Parent.Windows(1).Visible = True
Do manipulations of your file here.
' ...
' If this copy of Microsoft Excel was not running when you
' started, close it using the Application property's Quit method.
' Note that when you try to quit Microsoft Excel, the
' title bar blinks and a message is displayed asking if you
' want to save any loaded files.
If ExcelWasNotRunning = True Then
MyXL.Application.Quit
End IF
Set MyXL = Nothing ' Release reference to the
' application and spreadsheet.
End Sub
Sub DetectExcel()
' Procedure dectects a running Excel and registers it.
Const WM_USER = 1024
Dim hWnd As Long
' If Excel is running this API call returns its handle.
hWnd = FindWindow("XLMAIN", 0)
If hWnd = 0 Then ' 0 means Excel not running.
Exit Sub
Else
' Excel is running so use the SendMessage API
' function to enter it in the Running Object Table.
SendMessage hWnd, WM_USER + 18, 0, 0
End If
End Sub
Uw Office-vaardigheden uitbreiden
Training verkennen
Als eerste nieuwe functies krijgen
Deelnemen aan Office Insiders

Was deze informatie nuttig?

Bedankt voor uw feedback.

Hartelijk dank voor uw feedback! Het lijkt ons een goed idee om u in contact te brengen met een van onze Office-ondersteuningsagents.

×