Funktionen GetObject

Bemærk: Den funktion, metode, objekt eller egenskab, som beskrives i dette emne er deaktiveret, hvis Microsoft Jet-udtrykstjenesten er i sandkassetilstand, der forhindrer evaluering af udtryk, der muligvis ikke er sikre. Yderligere oplysninger om sandkassetilstand finder du i Hjælp ved at søge på "sandkassetilstand".

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

Syntaks

GetObject([stinavn ] [, klasse ] )

Syntaksen for funktionen GetObjekt består af følgende argument.

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: I de følgende eksempler demonstreres brugen af denne funktion i et VBA-modul (Visual Basic for Applications). Du kan få yderligere oplysninger om arbejde med VBA ved at vælge Udviklerreference på rullelisten ud for Søg og indtaste et eller flere udtryk i søgeboksen.

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 aktiveres, henviser du til det i kode ved hjælp af den objektvariabel, du har defineret. I det foregrående eksempel, kan du få adgang til egenskab og Metode for det nye objekt ved hjælp af objektvariablen MyObject. F.eks.:

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

I dette eksempel anvendes funktionen GetObject til at opnå en henvisning til et bestemt Microsoft Office Excel 2007-regneark (MyXL). I eksemplet anvendes regnearkets egenskab Program til at gøre Excel synlig, til at lukke det osv. Ved hjælp af to API-opkald søger DetectExcel Sub-proceduren efter Excel, og hvis programmet kører, angives det i objekttabellen. Det første opkald til funktionen GetObject medfører en fejl, hvis Microsoft Excel ikke allerede kører. I eksemplet medfører fejlen, at flaget ExcelWasNotRunning angives til Sand. Det andet opkald til funktionen GetObject angiver, at en fil skal åbnes. Hvis Excel ikke allerede kører, starter det andet opkald programmet, og der returneres en henvisning til det regneark, der er angives med den angivne fil mytest.xls. Filen skal findes på den angivne placering. I modsat fald genereres der en automationsfejl i Visual Basic. Derefter medfører eksempelkoden, at både Excel og det vindue, der indeholder det angivne regneark, bliver synlig. Endelig anvender koden metoden Afslut for objektet Program til at lukke Excel, hvis en tidligere version af Excel ikke kører. Hvis programmet allerede kørte, gøres der intet forsøg på at lukke det. Selve henvisningen udløses ved at angive 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
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!

×