Napomena: Funkcija, metoda, objekt ili svojstvo opisano u ovoj temi onemogućeno je ako je Microsoft Jet Expression Service pokrenut u načinu rada sigurnosne ograde, što onemogućuje procjenu potencijalno nesigurnih izraza. Dodatne informacije o načinu rada sigurnosne ograde potražite u pomoći u odjeljku "način rada s memorijom za testiranje".
Vraća referencu na objekt koji pruža ActiveX komponenta.
Sintaksa
GetObject([pathname ] [, class ] )
Sintaksa funkcije GetObject sadrži sljedeće argumente:
Argument |
Opis |
---|---|
naziv puta |
Neobavezno. Variant (niz). Cijeli put i naziv datoteke koja sadrži objekt za dohvaćanje. Ako je naziv puta izostavljen, klasa je obavezna. |
klasa |
Neobavezno. Variant (niz). Niz koji predstavlja klasa objekta. |
Klasa argument naziv aplikacije sintakse.objecttype i ima sljedeće dijelove:
Dio |
Opis |
---|---|
naziv aplikacije |
Obavezno. Variant (niz). Naziv aplikacije koja pruža objekt. |
vrsta objekta |
Obavezno. Variant (niz). Vrsta ili klasa objekta za stvaranje. |
Napomene
Napomena: Primjeri koji slijede prikazuju korištenje te funkcije u modulu jezika Visual Basic for Applications (VBA). Da biste pronašli dodatne informacije o radu s VBA-om, na padajućem popisu uz stavku Traži odaberite stavku Referenca za razvojne inženjere pa unesite jedan ili više izraza u okvir pretraživanja.
Pomoću funkcije GetObject pristupite ActiveX objektu iz datoteke i dodijelite objekt objektu varijabla objekta. Pomoću naredbe Set dodijelite objekt koji je GetObject vratio varijabli objekta. Na primjer:
Dim CADObject As Object
Set CADObject = GetObject("C:\CAD\SCHEMA.CAD")
Kada se taj kod izvrši, pokrenut će se aplikacija pridružena navedenom nazivu puta i aktivirati objekt u navedenoj datoteci.
Ako je naziv puta niz nulte duljine (""), GetObject vraća novu instancu objekta navedene vrste. Ako je argument naziv puta izostavljen, GetObject vraća trenutno aktivni objekt navedene vrste. Ako ne postoji objekt navedene vrste, doći će do pogreške.
Neke aplikacije omogućuju aktivaciju dijela datoteke. Na kraj naziva datoteke dodajte uskličnik (!) i slijedite ga nizom koji označava dio datoteke koji želite aktivirati. Informacije o stvaranju ovog niza potražite u dokumentaciji aplikacije koja je stvorila objekt.
Na primjer, u aplikaciji za crtanje možda imate više slojeva na crtežu pohranjenom u datoteci. Pomoću sljedećeg koda možete aktivirati sloj unutar crteža pod nazivom SCHEMA.CAD:
Set LayerObject = GetObject("C:\CAD\SCHEMA.CAD!Layer3")
Ako ne navedete klasa objekta , automatizacija određuje pokretanje aplikacije i objekt koji će se aktivirati na temelju naziva datoteke koji navedete. Neke datoteke, međutim, mogu podržavati više od jedne klase objekta. Crtež, primjerice, može podržavati tri različite vrste objekata: objekt Aplikacije, Crtežni objekt i objekt Alatna traka, a svi su dio iste datoteke. Da biste odredili koji objekt u datoteci želite aktivirati, koristite neobavezni argument klase . Na primjer:
Dim MyObject As Object
Set MyObject = GetObject("C:\DRAWINGS\SAMPLE.DRW", _
"FIGMENT.DRAWING")
U primjeru FIGMENT je naziv aplikacije za crtanje, a DRAWING je jedna od vrsta objekata koje podržava.
Kada se objekt aktivira, referencirate ga u kodu pomoću varijable objekta koju ste definirali. U prethodnom primjeru svojstvima i metodama novog objekta pristupate pomoću varijable objekta MyObject. Na primjer:
MyObject.Line 9, 90
MyObject.InsertText 9, 100, "Hello, world."
MyObject.SaveAs "C:\DRAWINGS\SAMPLE.DRW"
Napomena: Funkciju GetObject koristite kada postoji trenutna instanca objekta ili ako želite stvoriti objekt s već učitanom datotekom. Ako nema trenutne instance i ne želite da se objekt pokrenu s datotekom, koristite funkciju CreateObject .
Ako se objekt registrira kao objekt s jednom instancom, stvara se samo jedna instanca objekta, bez obzira na to koliko je puta izvršen CreateObject . Uz jednostruki objekt GetObject uvijek vraća istu instancu kada se poziva pomoću sintakse niza nulte duljine ("") i uzrokuje pogrešku ako je argument naziv puta izostavljen. GetObject ne možete koristiti da biste dobili referencu na razred stvoren pomoću programa Visual Basic.
Primjer
U ovom se primjeru pomoću funkcije GetObject dohvaća referenca na određeni radni list programa Excel (MyXL). Koristi svojstvo Aplikacije radnog lista da bi Excel bio vidljiv, da bi ga zatvorio i tako dalje. Pomoću dva POZIVA API-ja pod procedura DetectExcel traži Excel, a ako je pokrenut, unosi ga u pokrenutu tablicu objekata. Prvi poziv getObjectu uzrokuje pogrešku ako Microsoft Excel još nije pokrenut. U primjeru pogreška uzrokuje postavljanje zastavice ExcelWasNotRunning na True. Drugi poziv getObject određuje datoteku koja će se otvoriti. Ako Excel još nije pokrenut, pokreće se drugi poziv i vraća referencu na radni list prikazan navedenom datotekom, a mytest.xls. Datoteka mora postojati na navedenom mjestu; u suprotnom se generira pogreška automatizacije pogreške programa Visual Basic. Nakon toga, ogledni kod čini i Excel i prozor koji sadrži navedeni radni list vidljivim. Na kraju, ako nije bilo prethodne verzije programa Excel koja je pokrenuta, kod za zatvaranje programa Excel koristi metodu Quit objekta Aplikacije. Ako je aplikacija već bila pokrenuta, ne pokušava se zatvoriti. Sama se referenca izdaje postavljanjem na 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