Funkcija „GetObject“

Primenjuje se na
Access za Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Napomena

Funkcija, metod, objekat ili svojstvo opisani u ovoj temi onemogućeni su ako je usluga Microsoft Jet Expression Service pokrenuta u režimu "sandbox", što sprečava procenu potencijalno nebezbednih izraza. Više informacija o režimu "sandbox" potražite u pomoći za "režim sandbox".

Daje referencu na objekat koji obezbeđuje ActiveX komponenta.

Sintaksa

GetObject([imeputanje ] [, klasa ] )

Sintaksa funkcije GetObject ima sledeće argumente:

Argument Opis
putanja Opcionalno. Varijanta (niska). Puna putanja i ime datoteke koja sadrži objekat koji treba preuzeti. Ako je pathname izostavljen, class je obavezna.
klasa Opcionalno. Varijanta (niska). Niska koja predstavlja klasu objekta.

Argument classkoristi sintaksu appname.objecttype i sastoji se od sledećih delova:

Deo Opis
ime aplikacije Obavezno. Varijanta (niska). Ime aplikacije koja obezbeđuje objekat.
tipobjekta Obavezno. Varijanta (niska). Tip ili klasa objekta koji treba napraviti.

Napomene

Napomena

Primeri koji slede pokazuju upotrebu ove funkcije u Visual Basic for Applications (VBA) modulu. Za više informacija o radu sa VBA modulom izaberite stavku Referenca razvojnog programera sa padajuće liste pored stavke Pretraga i unesite termine u polje za pretragu.

Koristite funkciju GetObject da biste pristupili ActiveX objektu iz datoteke i dodelili objekat promenljivoj objekta. Koristite instrukciju Set da biste objekat koji je vratila funkcija GetObject dodelili promenljivoj objekta. Na primer:


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

Kada se ovaj kôd izvrši, pokreće se aplikacija povezana sa navedenim imenom putanje i aktivira se objekat u navedenoj datoteci.

Ako je PathName niska nulte dužine (""), GetObject daje novu instancu objekta navedenog tipa. Ako se argument pathname izostavi, GetObject daje trenutno aktivan objekat navedenog tipa. Ako ne postoji objekat navedenog tipa, dobija se greška.

Neke aplikacije vam omogućavaju da aktivirate deo datoteke. Dodajte znak uzvika (!) na kraju imena datoteke i iza njega unesite nisku koja identifikuje deo datoteke koji želite da aktivirate. Za informacije o tome kako da kreirate ovu nisku pogledajte dokumentaciju za aplikaciju koja je kreirala objekat.

Na primer, u aplikaciji za crtanje možete imati više slojeva crteža uskladištenih u datoteci. Možete da koristite sledeći kôd da biste aktivirali sloj u okviru crteža koji se zove SCHEMA.CAD:


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

Ako ne navedete klasu objekta, automatizacija određuje aplikaciju koja će se pokrenuti i objekat koji će se aktivirati na osnovu imena datoteke koje navedete. Neke datoteke, međutim, mogu da podržavaju više klasa objekata. Na primer, crtež može da podrži tri različita tipa objekata: objekat aplikacije, nacrtani objekat i objekat trake sa alatkama, koji su deo iste datoteke. Da biste naveli koji objekat u datoteci želite da aktivirate, koristite opcionalni argument klase . Na primer:


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

U datom primeru ovo FIGMENT je ime aplikacije za crtanje i jedan je od tipova DRAWING objekata koje podržava.

Kada je objekat aktiviran, možete da upućujete na njega u kodu pomoću promenljive objekta koju ste definisali. U prethodnom primeru, svojstvima i metodama novog objekta pristupate pomoću promenljive MyObjectobjekta. Na primer:


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

Napomena

Koristite funkciju GetObject kada postoji trenutna instanca objekta ili ako želite da kreirate objekat sa već učitanom datotekom. Ako ne postoji trenutna instanca i ne želite da se objekat pokreće sa učitanom datotekom, koristite funkciju CreateObject .

Ako se objekat registrovao kao objekat sa jednom instancom, kreira se samo jedna instanca objekta, bez obzira na to koliko puta se CreateObject izvršava. Sa objektom sa jednom instancom, GetObject uvek vraća istu instancu kada je pozvan sa sintaksom niske nulte dužine ("") i izaziva grešku ako se argument pathname izostavi. Ne možete da koristite GetObject da biste dobili referencu za klasu kreiranu pomoću programa Visual Basic.

Primer

Ovaj primer koristi funkciju GetObject da bi se dobila referenca za određeni Excel radni list (MyXL). Koristi svojstvo "Aplikacija " radnog lista da bi Excel učinio vidljivim, zatvorio ga i tako dalje. Koristeći dva API poziva, procedura DetectExcel Sub traži Excel i, ako je pokrenut, unosi ga u tabelu pokrenutog objekta. Prvi poziv funkcije GetObject izaziva grešku ako Microsoft Excel nije pokrenut. U datom primeru, zbog greške je zastavica ExcelWasNotRunning postavljena na vrednost "True". Drugi poziv za GetObject navodi datoteku za otvaranje. Ako Excel nije pokrenut, drugi poziv ga pokreće i vraća referencu na radni list koji predstavlja navedena datoteka mytest.xls. Datoteka mora postojati na navedenoj lokaciji; u suprotnom, generiše se greška programa Visual Basic prilikom automatizacije. Zatim, primer koda čini vidljivim Excel i prozor koji sadrži navedeni radni list. Konačno, ako nije pokrenuta nijedna prethodna verzija programa Excel, kôd koristi metod Quit objekta aplikacije da bi zatvorio Excel. Ako je aplikacija već bila pokrenuta, nije napravljen nikakav pokušaj da se ona zatvori. Sama referenca se oslobađa postavljanjem na vrednost " Ništa".


' 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