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

Notă: Funcția, metoda, obiectul sau proprietatea descrise în acest subiect este dezactivată dacă Serviciul de expresii Microsoft Jet rulează în modul sandbox, ceea ce împiedică evaluarea expresiilor potențial nesigure. Pentru mai multe informații despre modul sandbox, căutați "modul sandbox" în Ajutor.

Returnează o referință la un obiect furnizat de o componentă ActiveX.

Sintaxă

GetObject([nume pathname ] [, clasă ] )

Sintaxa funcției GetObject are următoarele argumente:

Argument

Descriere

Pathname

Opțional. Variant (Șir). Calea completă și numele fișierului care conține obiectul de regăsit. Dacă numele căii este omis, este necesară clasa .

clasă

Opțional. Variant (Șir). Este un șir reprezentând clasă obiectului.

Clasa argument utilizează numele de aplicație pentru sintaxă.objecttype și are următoarele componente:

Parte

Descriere

nume aplicație

Obligatoriu. Variant (Șir). Numele aplicației care furnizează obiectul.

tip obiect

Obligatoriu. Variant (Șir). Tipul sau clasa de obiect de creat.

Observații

Notă: Exemplele care urmează demonstrează utilizarea acestei funcții într-un modul Visual Basic for Applications (VBA). Pentru mai multe informații despre lucrul cu VBA, selectați Referințe pentru dezvoltatori în lista verticală de lângă Căutare și introduceți unul sau mai mulți termeni în caseta de căutare.

Utilizați funcția GetObject pentru a accesa un obiect ActiveX dintr-un fișier și a atribui obiectul unui variabilă obiect. Utilizați instrucțiunea Set pentru a atribui obiectul returnat de GetObject variabilei obiect. De exemplu:

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

Când se execută acest cod, aplicația asociată cu numele de cale specificat este pornită și obiectul din fișierul specificat este activat.

Dacă pathname este un șir de lungime zero (""), GetObject returnează o nouă instanță de obiect de tipul specificat. Dacă argumentul nume de cale este omis, GetObject returnează un obiect activ în prezent de tipul specificat. Dacă nu există niciun obiect de tipul specificat, se produce o eroare.

Unele aplicații vă permit să activați o parte a unui fișier. Adăugați un semn de exclamare (!) la sfârșitul numelui de fișier și urmați-l cu un șir care identifică partea din fișier pe care doriți să o activați. Pentru informații despre cum să creați acest șir, consultați documentația pentru aplicația care a creat obiectul.

De exemplu, într-o aplicație de desenare, este posibil să aveți mai multe straturi la un desen stocat într-un fișier. Puteți utiliza următorul cod pentru a activa un strat dintr-un desen numit SCHEMA.CAD:

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

Dacă nu specificați clasa obiectului, automatizarea determină pornirea aplicației și a obiectului de activat, pe baza numelui de fișier pe care îl furnizați. Totuși, unele fișiere pot accepta mai multe clase de obiecte. De exemplu, un desen poate accepta trei tipuri diferite de obiecte: un obiect Aplicație , un obiect desenat și un obiect bară de instrumente , toate acestea fiind parte a aceluiași fișier. Pentru a specifica ce obiect dintr-un fișier doriți să activați, utilizați argumentul clasă opțional. De exemplu:

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

În exemplu, FIGMENT este numele unei aplicații de desen și DRAWING este unul dintre tipurile de obiecte pe care le acceptă.

După activarea unui obiect, îl referiți în cod utilizând variabila de obiect pe care ați definit-o. În exemplul precedent, accesați proprietățile și metodele obiectului nou utilizând variabila obiect MyObject. De exemplu:

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

Notă: Utilizați funcția GetObject atunci când există o instanță curentă a obiectului sau dacă doriți să creați obiectul cu un fișier deja încărcat. Dacă nu există nicio instanță curentă și nu doriți ca obiectul să înceapă cu un fișier încărcat, utilizați funcția CreateObject .

Dacă un obiect s-a înregistrat ca obiect cu o singură instanță, se creează o singură instanță a obiectului, indiferent de câte ori se execută CreateObject . Cu un obiect cu o singură instanță, GetObject returnează întotdeauna aceeași instanță atunci când este apelat cu sintaxa șirului de lungime zero ("") și provoacă o eroare dacă argumentul nume de cale este omis. Nu puteți utiliza GetObject pentru a obține o referință la o clasă creată cu Visual Basic.

Exemplu

Acest exemplu utilizează funcția GetObject pentru a obține o referință la o anumită foaie de lucru Excel (MyXL). Utilizează proprietatea Aplicație a foii de lucru pentru a face Excel vizibil, a-l închide și așa mai departe. Utilizând două apeluri API, procedura DetectExcel Sub caută Excel și, dacă rulează, o introduce în tabelul Running Object. Primul apel la GetObject provoacă o eroare dacă Microsoft Excel nu rulează deja. În exemplu, eroarea determină ca semnalizarea ExcelWasNotRunning să fie setată la True. Al doilea apel către GetObject specifică un fișier de deschis. Dacă Excel nu rulează deja, al doilea apel îl pornește și returnează o referință la foaia de lucru reprezentată de fișierul specificat, mytest.xls. Fișierul trebuie să existe în locația specificată; în caz contrar, este generată eroarea Visual Basic error Automation. În continuare, codul din exemplu face vizibile atât Excel, cât și fereastra care conține foaia de lucru specificată. În sfârșit, dacă nu a existat nicio versiune anterioară de Excel care să ruleze, codul utilizează metoda Quit a obiectului Aplicație pentru a închide Excel. Dacă aplicația rula deja, nu se încearcă închiderea acesteia. Referința în sine este lansată setând-o la Nimic.

' 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

Aveți nevoie de ajutor suplimentar?

Doriți mai multe opțiuni?

Explorați avantajele abonamentului, navigați prin cursurile de instruire, aflați cum să vă securizați dispozitivul și multe altele.

Comunitățile vă ajută să adresați întrebări și să răspundeți la întrebări, să oferiți feedback și să primiți feedback de la experți cu cunoștințe bogate.