Applies ToAccess til Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

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.

I et tegneprogram kan du f.eks. have flere lag på en tegning, der er gemt 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, 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, henviser du til det i kode ved hjælp af 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. Det kunne f.eks. være:

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 Excel-regneark (MyXL). Den bruger regnearkets Program-egenskab til at gøre Excel synlig, lukke det osv. Ved hjælp af to API-kald søger DetectExcel Sub-proceduren efter Excel, og hvis den kører, angives den i den kørende objekttabel. Det første kald til GetObject medfører en fejl, hvis Microsoft Excel ikke allerede kører. I eksemplet medfører fejlen, at ExcelWasNotRunning-flaget indstilles til Sand. Det andet kald til GetObject angiver en fil, der skal åbnes. Hvis Excel ikke allerede kører, starter det andet kald det og returnerer en reference til det regneark, der er repræsenteret af den angivne fil, mytest.xls. Filen skal findes på den angivne placering. Ellers genereres Visual Basic-fejlautomatiseringsfejlen. Derefter gør eksempelkoden både Excel og det vindue, der indeholder det angivne regneark, synlige. Hvis der ikke var nogen tidligere version af Excel, der kørte, bruger koden Application-objektetsQuit-metode 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

Har du brug for mere hjælp?

Vil du have flere indstillinger?

Udforsk abonnementsfordele, gennemse kurser, få mere at vide om, hvordan du sikrer din enhed og meget mere.

Communities hjælper dig med at stille og besvare spørgsmål, give feedback og høre fra eksperter med omfattende viden.