Applies ToAccess för Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Obs!: Funktionen, metoden, objektet eller egenskapen som beskrivs i det här avsnittet inaktiveras om Microsoft Jet Expression Service körs i begränsat läge, vilket förhindrar utvärderingen av potentiellt osäkra uttryck. Om du vill ha mer information om begränsat läge söker du efter "begränsat läge" i hjälpdokumentationen.

Returnerar en referens till ett objekt som tillhandahålls av en ActiveX-komponent.

Syntax

GetObject([sökväg ] [, klass ] )

GetObject-funktionens syntax har följande argument:

Argument

Beskrivning

sökväg

Valfritt. Variant (String). Den fullständiga sökvägen till och namnet på den fil som innehåller det objekt som ska hämtas. Om sökväg utelämnas är klass obligatoriskt.

klass

Valfritt. Variant (String). En sträng som representerar objektets klass.

Argumentet klassargument använder syntaxen programnamn.objekttyp och har följande delar:

Del

Beskrivning

appname

Obligatoriskt. Variant (sträng). Namnet på programmet som tillhandahåller objektet.

objecttype

Obligatoriskt. Variant (String). Den typ eller klass av objekt du vill skapa.

Anmärkningar

Obs!: I exemplen nedan visar vi hur du använder den här funktionen i en Visual Basic for Applications-modul (VBA). Om du vill läsa mer om hur man använder VBA, kan du välja Info för utvecklare i listrutan bredvid Sök och sedan skriva en eller flera söktermer i sökrutan.

Använd funktionen GetObject för att komma åt ett ActiveX-objekt från en fil och tilldela objektet till en objektvariabel. Använd satsen Set för att tilldela objekt som returneras av GetObject till objektvariabeln. Till exempel:

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

När den här koden körs, startas det program som är kopplat till angiven sökväg och objekt i den angivna filen aktiveras.

Om sökväg är en sträng med längden noll (""), returnerar GetObject en ny objektinstans av den angivna typen. Om argumentet sökväg utelämnas returnerar GetObject ett aktivt objektet av den angivna typen. Om det inte finns något objekt med den angivna typen, uppstår ett fel.

Vissa program tillåter att du aktiverar en del av en fil. Lägg till ett utropstecken (!) i slutet av filnamnet och därefter en sträng som identifierar den del av filen du vill aktivera. Information om hur du skapar den här strängen finns i dokumentationen för det program som skapade objektet.

I ett ritprogram kan du till exempel ha flera lager i en teckning som lagras i en fil. Du kan använda följande kod för att aktivera ett lager i en teckning som heter SCHEMA.CAD:

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

Om du inte anger objektets klass, avgörs automatiskt vilket program som ska startas och vilket objektet som ska aktiveras, baserat på det filnamn du anger. Vissa filer kan dock ha stöd för fler än en objektklass. En teckning kan till exempel ha stöd för tre olika typer av objekt: ett programobjekt, ett ritobjekt och ett verktygsfältsobjekt, som alla är delar av samma fil. Om du vill ange vilket objekt i en fil som du vill aktivera använder du det valfria argumentet klass. Till exempel:

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

I exemplet är FIGMENT namnet på ett ritprogram och DRAWING är en av de objekttyper programmet stöder.

När ett objekt har aktiverats kan du referera till det i koden genom att använda den objektvariabel du har definierat. I exemplet ovan kommer du åt egenskaper och metoder för det nya objektet med hjälp av objektvariabeln MyObject. Till exempel:

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

Obs!: Använd funktionen GetObject när det finns en aktiv instans av objektet eller om du vill skapa objektet med en fil som redan har lästs in. Om det inte finns någon aktuell instans, och du inte vill att objektet ska startas med en fil som lästs in, använder du funktionen CreateObject.

Om ett objekt har registrerat sig själv som ett objekt med en enstaka instans skapas bara en förekomst av objektet, oavsett hur många gånger CreateObject körs. Med en objekt med en enstaka instans returnerar GetObject alltid samma instans när funktionen anropas med en syntax med en sträng med längden noll (""), och den orsakar ett fel om argumentet sökväg utelämnas. Du kan inte använda GetObject till att hämta en referens till en klass som skapats med Visual Basic.

Exempel

I det här exemplet används funktionen GetObject för att få en referens till ett specifikt Excel-kalkylblad (MyXL). Kalkylbladets programegenskap används för att göra Excel synligt, stänga det och så vidare. Med hjälp av två API-anrop söker DetectExcel Sub-proceduren efter Excel, och om den körs anger den i tabellen Löpande objekt. Det första anropet till GetObject orsakar ett fel om Microsoft Excel inte redan körs. I exemplet gör felet att flaggan ExcelWasNotRunning är inställd på Sant. Det andra anropet till GetObject anger en fil som ska öppnas. Om Excel inte redan körs startar det andra anropet det och returnerar en referens till kalkylbladet som representeras av den angivna filen, mytest.xls. Filen måste finnas på den angivna platsen. Annars genereras Visual Basic-felet Automatiseringsfel. Därefter gör exempelkoden både Excel och fönstret som innehåller det angivna kalkylbladet synliga. Slutligen, om det inte fanns någon tidigare version av Excel igång, använder koden application-objektetsQuit-metod för att stänga Excel. Om programmet redan körs görs inget försök att stänga det. Själva referensen frigörs genom att den ställs in på Ingenting.

' 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

Behöver du mer hjälp?

Vill du ha fler alternativ?

Utforska prenumerationsförmåner, bläddra bland utbildningskurser, lär dig hur du skyddar din enhet med mera.

Communities hjälper dig att ställa och svara på frågor, ge feedback och få råd från experter med rika kunskaper.