GetObject İşlevi

Uygulandığı Öğe
Microsoft 365 için Access Access 2024 Access 2021 Access 2019 Access 2016

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 olmayabilecek 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 verir.

Söz dizimi

GetObject([yoladı ] [, sınıf ] )

GetObject işlevinin söz diziminde aşağıdaki bağımsız değişkenler bulunur:

Bağımsız değişken Açıklama
yol adı İsteğe bağlı. Değişken (dize). Alınacak nesneyi içeren dosyanın tam yolu ve adı. Yol adı atlanırsa, sınıf gereklidir.
sınıf İsteğe bağlı. Değişken (dize). Nesnenin sınıfını temsil eden dize.

Sınıfbağımsız değişkeni appname.objecttype söz dizimini kullanır ve şu bölümlere sahiptir:

Bölüm Açıklama
uygulama adı Gerekli. Değişken (dize). Nesneyi sağlayan uygulamanın adı.
nesne tü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şkenine 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üldüğünde, belirtilen yol adıyla ilişkili uygulama başlatılır ve belirtilen dosyadaki nesne etkinleştirilir.

Yol adı sıfır uzunlukta 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 o anda etkin olan bir nesneyi 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 ardından dosyanın etkinleştirmek istediğiniz bölümünü tanımlayan bir dize ekleyin. Bu dizenin nasıl oluşturulduğu 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ına sahip olabilirsiniz. Şu adlı bir çizimdeki SCHEMA.CADbir 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, sağladığınız dosya adına göre başlatılacak uygulamayı ve etkinleştirilecek nesneyi belirler. Bununla birlikte, bazı dosyalar birden çok nesne sınıfını destekleyebilir. Örneğin, bir çizim aynı dosyanın parçası olan üç farklı nesne türünü destekleyebilir: Uygulama nesnesi, Çizim nesnesi ve Araç Çubuğu nesnesi. 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ştirildiğinde, tanımladığınız nesne değişkenini kullanarak kodda ona başvurursunuz. Yukarıdaki örnekte, nesne değişkenini MyObjectkullanarak yeni nesnenin özelliklerine ve yöntemlerine erişirsiniz. Ö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 olduğunda veya nesneyi zaten yüklü bir dosyayla oluşturmak istediğinizde GetObject işlevini kullanın. Geçerli bir örnek yoksa ve nesnenin yüklenen bir dosyayla başlamasını istemiyorsanız, CreateObject işlevini kullanın.

Bir nesne kendisini tek örnekli bir nesne olarak kaydettiyse, CreateObject kaç kez yürütülürse yürütülsün, 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 bir hataya neden olur. Visual Basic ile oluşturulmuş 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ılmıştır. Excel'i görünür kılmak, kapatmak vb. işlemler için çalışma sayfasının Uygulama özelliğini kullanır. DetectExcel Sub yordamı, iki API çağrısı kullanarak Excel'i arar ve çalışıyorsa Çalışan Nesne Tablosuna girer. Microsoft Excel zaten çalışmıyorsa GetObject'e yapılan ilk çağrı bir 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 zaten çalışmıyorsa, ikinci çağrı onu başlatır ve belirtilen dosya olan mytest.xls tarafından temsil edilen çalışma sayfasına bir başvuru döndürür. 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 çalışan önceki bir sürümü yoksa, kod Excel'i kapatmak için Application nesnesinin Quit yöntemini kullanır. Uygulama zaten çalışıyorsa, kapatmak için herhangi bir girişimde 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