Funktionen GetObject

Vigtigt: Denne artikel er maskinoversat. Se ansvarsfraskrivelsen. Du kan finde den engelske version af denne artikel her til din orientering.

Bemærk: Den funktion, metode, objekt eller egenskab, der er beskrevet i dette emne er deaktiveret, hvis Microsoft Jet Expression Service kører i sandkassetilstand, hvilket forhindrer evaluering af potentielt usikre udtryk. Du kan finde flere oplysninger om sandkassetilstand, søge efter "sandkassetilstand" i Hjælp.

Returnerer en henvisning til et objekt, som leveres af en ActiveX-komponent.

Syntaks

GetObject ([stinavn ] [, klasse ] )

Syntaksen for funktionen GetObject har følgende argumenter:

Argument

Beskrivelse

stinavn

Valgfri. Variant (streng). Den fulde sti og det fulde navn på den fil, der indeholder det objekt, som skal hentes. Hvis stinavn udelades, skal klasse angives.

class

Valgfri. Variant (streng). En streng, der angiver klasse for objektet.


I forbindelse med classargument bruges syntaksen appname.objekttype og det består af følgende dele:

Del

Beskrivelse

appname

Påkrævet. Variant (streng). Navnet på det program, der leverer objektet.

objekttype

Påkrævet. Variant (streng). Typen eller klassen af det 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, som funktionen GetObject returneret til objektvariablen. iable. F.eks.:

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 streng med længden nul (""), returnerer funktionen GetObject en ny objektforekomst af den angivne type. Hvis argumentet stinavn udelades, returnerer funktionen GetObject et aktuelt aktivt objekt af den angivne type. Hvis der ikke findes et objekt af den angivne type, opstår der en fejl.

Nogle programmer gør det muligt at aktivere en del af en fil. Tilføj et udråbsregn (!) i slutningen af filnavnet og efterfølgende en streng, som angiver den del af filen, du vil aktivere. Oplysninger om, hvordan du opretter denne streng, finder du i dokumentationen til det program, der blev brugt til at oprette objektet.

I et tegneprogram kan du f.eks. have flere lag til en tegning, der er lagret i en fil. Du kan bruge følgende kode til at aktivere et lag i en tegning, der kaldes SCHEMA.CAD:

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

Hvis du ikke angiver objektets klasse, bestemmer Automation, at programmet skal startes, og objektet skal aktiveres, på basis af det filnavn, du angiver. Nogle filer understøtter dog mere end én objektklasse. En regning kan f.eks. understøtte tre forskellige objekttyper: et programobjekt, et tegningsobjekt og et værktøjslinjeobjekt, som alle er en del af den samme fil. Hvis du vil angive, hvilket objekt i en fil du vil aktivere, skal du bruge det valgfri argument klasse. F.eks.:

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, det understøtter.

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

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

Bemærk: Brug funktionen GetObject, hvis 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 en aktuel forekomst, og objektet ikke skal startes med en indlæst fil, skal du bruge funktionen CreateObject.

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

Eksempel

Dette eksempel bruges funktionen GetObject for at få en reference til en bestemt Microsoft Office Excel 2007 regneark (MyXL). Regnearkets programmet egenskaben bruges til at gøre Excel synlig, at lukke den osv. Ved hjælp af to API-kald, søger DetectExcel Sub -proceduren ser ud til Excel, og hvis det kører, du indsætter den i tabellen kører objekt. Den første opkald til funktionen GetObject medfører en fejl, hvis Microsoft Excel ikke allerede kører. I eksemplet får fejlen flaget ExcelWasNotRunning være indstillet til sand. Det andet opkald til GetObject angiver en fil til at åbne. Hvis Excel ikke allerede kører, det andet opkald startede den, og returnerer en reference til det regneark, der er repræsenteret af den angivne fil mytest.xls. Filen skal findes i den angivne placering. Ellers genereres fejlen Visual Basic Automation-fejl. På eksempelkoden gør derefter både Excel og det vindue, der indeholder det angivne regneark, der er synlige. Endelig, hvis der var en tidligere version af Excel ikke kører, bruger koden objektet ApplicationQuit metode til at lukke Excel. Hvis programmet allerede kører, forsøgt ingen at lukke den. Referencen til selve er udgivet ved at angive den til noget.

' 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

Bemærk: Ansvarsfraskrivelse for maskinoversættelse: Denne artikel er blevet oversat af et computersystem uden menneskelig indgriben. Microsoft tilbyder disse maskinoversættelse for at hjælpe ikke-engelsktalende brugere til at kunne nyde indhold om Microsofts produkter, tjenester og teknologier. Da artiklen er maskinoversat, kan den indeholde forkerte ord eller syntaks- eller grammatikfejl.

Del Facebook Facebook Twitter Twitter Mail Mail

Var disse oplysninger nyttige?

Fantastisk! Har du mere feedback?

Hvordan kan vi forbedre det?

Tak for din feedback!

×