Not: Microsoft Jet İfade Hizmeti korumalı alan modunda çalışıyorsa, bu konuda açıklanan işlev, yöntem, nesne veya özellik devre dışı bırakılır ve bu da güvenli olabilecek ifadelerin değerlendirilmesini engeller. Korumalı alan modu hakkında daha fazla bilgi için Yardım'da "korumalı alan modu" araması yapın.
ActiveX bileşeni tarafından sağlanan bir nesneye başvuru döndürür.
Söz dizimi
GetObject([pathname ] [, class ] )
GetObject işlevinin söz diziminde şu bağımsız değişkenler bulunur:
Bağımsız değişken |
Açıklama |
---|---|
Yoladı |
İsteğe bağlı. Değişken (Dize). Alınacak nesneyi içeren dosyanın tam yolu ve adı. Pathname belirtilmezse, sınıf gereklidir. |
sınıf |
İsteğe bağlı. Değişken (Dize). Nesnenin sınıf temsil eden bir dize. |
sınıf bağımsız değişken appname söz dizimini kullanır.objecttype ve şu bölümlere sahiptir:
Bölüm |
Açıklama |
---|---|
Uygadı |
Gerekli. Değişken (Dize). Nesnesini sağlayan uygulamanın adı. |
Nesnetürü |
Gerekli. Değişken (Dize). Oluşturulacak nesnenin türü veya sınıfı. |
Açıklamalar
Not: Aşağıdaki örneklerde, bu işlevin Visual Basic for Applications (VBA) modülünde kullanımı gösterilir. VBA ile çalışma hakkında daha fazla bilgi için, rama'nın yanındaki açılan listede Geliştirici Başvurusu'nu seçin ve arama kutusuna bir veya birden çok terim yazın.
Bir dosyadan ActiveX nesnesine erişmek ve nesneyi bir nesne değişkeni atamak için GetObject işlevini kullanın. GetObject tarafından döndürülen nesneyi nesne değişkenine atamak için Set deyimini kullanın. Örneğin:
Dim CADObject As Object
Set CADObject = GetObject("C:\CAD\SCHEMA.CAD")
Bu kod yürütürken, belirtilen yol adıyla ilişkilendirilmiş uygulama başlatılır ve belirtilen dosyadaki nesne etkinleştirilir.
Yol adı sıfır uzunluklu bir dize ("") ise, GetObject belirtilen türde yeni bir nesne örneği döndürür. Yol adı bağımsız değişkeni atlanırsa, GetObject belirtilen türde etkin bir nesne döndürür. Belirtilen türde bir nesne yoksa bir hata oluşur.
Bazı uygulamalar dosyanın bir bölümünü etkinleştirmenize olanak tanır. Dosya adının sonuna bir ünlem işareti (!) ekleyin ve dosyayı etkinleştirmek istediğiniz bölümü tanımlayan bir dizeyle izleyin. Bu dizeyi oluşturma hakkında bilgi için, nesneyi oluşturan uygulamanın belgelerine bakın.
Örneğin, bir çizim uygulamasında, bir dosyada depolanan bir çizimin birden çok katmanı olabilir. çizim içindeki SCHEMA.CADadlı katmanı etkinleştirmek için aşağıdaki kodu kullanabilirsiniz:
Set LayerObject = GetObject("C:\CAD\SCHEMA.CAD!Layer3")
Nesnenin sınıfını belirtmezseniz Otomasyon, başlatılacak uygulamayı ve etkinleştireceğiniz nesneyi sağladığınız dosya adına göre belirler. Ancak bazı dosyalar birden fazla nesne sınıfını destekleyemeyebilir. Örneğin, bir çizim üç farklı nesne türünü destekleyebilir: Uygulama nesnesi, Çizim nesnesi ve hepsi aynı dosyanın parçası olan bir Toolbar nesnesi. Bir dosyada hangi nesneyi etkinleştirmek istediğinizi belirtmek için isteğe bağlı sınıf bağımsız değişkenini kullanın. Örneğin:
Dim MyObject As Object
Set MyObject = GetObject("C:\DRAWINGS\SAMPLE.DRW", _
"FIGMENT.DRAWING")
Örnekte, FIGMENT bir çizim uygulamasının adıdır ve DRAWING desteklediği nesne türlerinden biridir.
Bir nesne etkinleştirildikten sonra, tanımladığınız nesne değişkenini kullanarak kodda bu nesneye başvurursunuz. Yukarıdaki örnekte, MyObjectnesne değişkenini kullanarak yeni nesnenin özelliklerine ve yöntemlerine erişeceksiniz. Örneğin:
MyObject.Line 9, 90
MyObject.InsertText 9, 100, "Hello, world."
MyObject.SaveAs "C:\DRAWINGS\SAMPLE.DRW"
Not: Nesnenin geçerli bir örneği varsa veya nesneyi zaten yüklenmiş bir dosyayla oluşturmak istiyorsanız GetObject işlevini kullanın. Geçerli bir örnek yoksa ve nesnenin bir dosya yüklenmiş olarak başlatılmasını istemiyorsanız CreateObject işlevini kullanın.
Bir nesne kendisini tek örnekli bir nesne olarak kaydettiyse, CreateObject'in kaç kez yürütülürse yürütülürse yürütülür, nesnenin yalnızca bir örneği oluşturulur. Tek örnekli bir nesneyle , GetObject sıfır uzunluklu dize ("") söz dizimi ile çağrıldığında her zaman aynı örneği döndürür ve yol adı bağımsız değişkeni atlanırsa hataya neden olur. Visual Basic ile oluşturulan bir sınıfa başvuru almak için GetObject kullanamazsınız.
Örnek
Bu örnekte, belirli bir Excel çalışma sayfasına (MyXL) başvuru almak için GetObject işlevi kullanılır. Excel'i görünür yapmak, kapatmak vb. için çalışma sayfasının Application özelliğini kullanır. İki API çağrısı kullanarak DetectExcel Sub yordamı Excel'i arar ve çalışıyorsa, Bunu Çalışan Nesne Tablosu'na girer. GetObject'e yapılan ilk çağrı, Microsoft Excel henüz çalışmıyorsa hataya neden olur. Örnekte hata, ExcelWasNotRunning bayrağının True olarak ayarlanmasına neden olur. GetObject'e yapılan ikinci çağrı, açılacak dosyayı belirtir. Excel henüz çalışmıyorsa, ikinci çağrı onu başlatır ve belirtilen dosyayla temsil edilen çalışma sayfasına bir başvuru döndürür mytest.xls. Dosya belirtilen konumda bulunmalıdır; aksi takdirde Visual Basic hatası Otomasyon hatası oluşturulur. Ardından, örnek kod hem Excel'i hem de belirtilen çalışma sayfasını içeren pencereyi görünür hale getirir. Son olarak, excel'in önceki bir sürümü çalıştırılmadıysa kod, Excel'i kapatmak için Uygulama nesnesinin Quit yöntemini kullanır. Uygulama zaten çalışıyorsa, kapatma girişiminde bulunulmaz. Başvurunun kendisi , Hiçbir şey olarak ayarlanarak serbest bırakılır.
' 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