Funktionen GetObject

Bemærk: Funktionen, metoden, objektet eller egenskaben, der er beskrevet i dette emne, deaktiveres, hvis Microsoft Jet Expression Service kører i sandkassetilstand, hvilket forhindrer evalueringen af potentielt usikre udtryk. Søg efter "sandkassetilstand" i Hjælp, hvis du vil have mere at vide om sandkassetilstand.

Returnerer en reference til et objekt, der leveres af en ActiveX-komponent.

Syntaks

GetObject([stinavn ] [, klasse ] )

Syntaksen for funktionen GetObject har disse argumenter:

Argument

Beskrivelse

stinavn

Valgfrit. Variant (Streng). Den fulde sti og navnet på den fil, der indeholder objektet, der skal hentes. Hvis stinavn udelades, er klasse påkrævet.

klasse

Valgfrit. Variant (Streng). En streng, der repræsenterer objektets klasse.


Klasse argument anvender syntaksen appnavn.objekttype og indeholder følgende dele:

Del

Beskrivelse

appnavn

Obligatorisk. Variant (Streng). Navnet på det program, der leverer objektet.

objekttype

Obligatorisk. Variant (Streng). Den type eller klasse af objekt, der skal oprettes.


Bemærkninger

Bemærk: Følgende eksempler demonstrerer brugen af denne funktion i et VBA-modul (Visual Basic for Applications). Hvis du vil have mere at vide om at arbejde med VBA, skal du vælge Udviklerreference på rullelisten ud for Søg og skrive ét eller flere ord i søgefeltet.

Brug funktionen GetObject til at få adgang til et ActiveX-objekt fra en fil og tildele objektet til en objektvariabel. Brug sætningen Set til at tildele det objekt, der returneres af GetObject, til objektvariablen. Eksempel:

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

Når denne kode udføres, startes det program, der er knyttet til det angivne stinavn, og objektet i den angivne fil aktiveres.

Hvis stinavn er en tom streng (""), returnerer GetObject en ny objektforekomst af den angivne type. Hvis argumentet stinavn udelades, returnerer GetObject et aktuelt aktivt objekt af den angivne type. Hvis der ikke findes et objekt af den angivne type, opstår der en fejl.

I nogle programmer er det muligt at aktivere en del af en fil. Tilføj et udråbstegn (!) i slutningen af filnavnet, og efterstil det med en streng, der identificerer den del af filen, du vil aktivere. Du kan få oplysninger om, hvordan du opretter denne streng, i dokumentationen til det program, der har oprettet objektet.

Du kan f.eks. have flere lag i en tegning, der er gemt i en fil i et tegneprogram. Du kan bruge følgende kode til at aktivere et lag i en tegning med navnet SCHEMA.CAD:

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

Hvis du ikke angiver objektets klasse, afgør Automation, hvilket program der skal startes, og hvilket objekt der skal aktiveres, baseret på det filnavn, du angiver. Visse filer understøtter dog muligvis mere end én objektklasse. Eksempelvis kan en tegning understøtte tre forskellige typer objekter: et Program-objekt, et Tegning-objekt og et Værktøjslinje-objekt, som alle er en del af den samme fil. For at angive hvilket objekt i en fil, du vil aktivere, skal du bruge det valgfrie argument klasse. Eksempel:

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

I eksemplet er FIGMENT navnet på et tegneprogram, og DRAWING er en af de objekttyper, som det understøtter.

Når et objekt er aktiveret, kan du referere til det i kode vha. den objektvariabel, du har defineret. I det foregående eksempel får du adgang til det nye objekts egenskaber og metoder ved hjælp af objektvariablen MyObject. Eksempel:

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

Bemærk:  Brug funktionen GetObject, når der er en aktuel forekomst af objektet, eller hvis du vil oprette objektet med en fil, der allerede er indlæst. Hvis der ikke er nogen aktuel forekomst, og du ikke ønsker, at objektet startes med den indlæste fil, skal du bruge funktionen CreateObject.

Hvis et objekt har registreret sig som et enkelt-forekomst-objekt, oprettes der kun én forekomst af objektet, uanset hvor mange gange CreateObject køres. Med et enkelt-forekomst-objekt returnerer GetObject altid den samme forekomst, når der kaldes med en syntaks med tom streng (""), og det medfører en fejl, hvis argumentet stinavn udelades. Du kan ikke bruge GetObject til at opnå en reference til en klasse, der er oprettet med Visual Basic.

Eksempel

I dette eksempel bruges funktionen GetObject til at få en reference til et bestemt Microsoft Office Excel 2007-regneark (MyXL). Det anvender regnearkets Program-egenskab til at gøre Excel synligt, til at lukke det osv. Ved hjælp af to API-kald søger DetectExcel-proceduren Sub efter Excel, og hvis det kører, indsættes det i objekttabellen. Det første kald til GetObject medfører en fejl, hvis Microsoft Excel ikke allerede kører. I eksemplet medfører fejlen, at flaget ExcelWasNotRunning indstilles til Sand. Det andet kald til GetObject angiver en fil, der skal åbnes. Hvis Excel ikke allerede kører, starter det andet kald programmet og returnerer en reference til det regneark, der repræsenteres af den angivne fil, mytest.xls. Filen skal findes på den angivne placering. Ellers genererer det Visual Basic-fejlen Automation-fejl. Derefter gør eksempelkoden både Excel og det vindue, der indeholder det angivne regneark, synlige. Endelig, hvis der ikke kørte nogen tidligere version af Excel, bruger koden Program-objektets metode Afslut til at lukke Excel. Hvis programmet allerede kørte, forsøges det ikke at lukke det. Selve referencen frigives ved at indstille den til Intet.

' 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
Udvid dine færdigheder
Gå på opdagelse i kurser
Få nye funktioner først
Bliv Office Insider

Var disse oplysninger nyttige?

Tak for din feedback!

Tak for din feedback! Det lyder, som om det vil kunne hjælpe, hvis du bliver sat i forbindelse med en af vores Office-supportteknikere.

×