MS Word, MS Outlook, MS PowerPoint ve Internet Explorer gibi diğer Microsoft Office uygulamaları arasında bağlantı kurmaya çalıştığımızda, Nesne Bağlama ve Gömme (OLE) ve Bileşik Nesne Modeli (COM) teknolojisini kullanacak olan VBA GetObject fonksiyonunu kullanmalıyız.
Örneğin, sistemimizde “Satış Raporu.xlsx.” adında açık bir çalışma kitabımız varsa ve buna erişmek istiyorsak, açık çalışma kitabına bağlantı kurmak için VBA GetObject fonksiyonunu kullanabiliriz.
Dim My_Wb as Object
Set My_Wb = GetObject(“Sales Report.xlsx”)
Çalışma kitabı referansı My_Wb değişkenine atandıktan sonra, çalışma kitabına erişmek için bunu kullanabiliriz.
ÖNEMLİ NOKTALAR
- VBA GetObject fonksiyonu, diğer uygulamalar tarafından oluşturulan nesnelere başvurmamıza yardımcı olur. Böylece, VBA kodu harici bir nesnenin özelliklerine ve yöntemlerine erişmek için kullanılabilir.
- VBA GetObject işlevi, çalışma kitabımızda kayıtlı olan Excel çalışma kitabının referansını almamızı sağlar. Kaydedilen konumdan bir MS Word belgesi açmamızı ve bu belgeyi etkinleştirmemizi ve üzerinde çalışmamızı sağlar.
- VBA GetObject fonksiyonunu kullanarak nesne referanslarını alabiliriz, ancak bir sınıfın referansına erişmek için kullanılamaz.
Sözdizimi – Excel VBA GETOBJECT Fonksiyonu
VBA GetObject fonksiyonunun sözdizimi aşağıdaki gibidir.
GetObject( [PathName], [Class])
Burada her iki argüman da isteğe bağlıdır.
- [PathName]: Erişilecek dosyaya veya nesneye giden tam yol. Eğer yol belirtilmemişse, zaten açılmış olan nesne döndürülür. Eğer yol adı belirtilmemişse, ikinci argüman zorunlu hale gelir.
Örneğin bilgisayarınızdaki klasörlerden birinde saklanan Excel dosyasına erişmek istiyorsanız, aşağıdaki gibi tam yolu verebiliriz.
C:\Kullanıcılar\jeevanay\OneDrive – xlmojo\Masaüstü\Kişisel\Satış Raporu.xlsx
- [Sınıf]: Erişmemiz gereken uygulama bu argümanda çift tırnak içinde verilecektir. Örneğin, bir Excel uygulaması oluşturmak için sınıfı aşağıdaki gibi sağlayabiliriz.
“Excel.Application”
Excel'de VBA GETOBJECT Fonksiyonu Nasıl Kullanılır?
Açılan Excel çalışma kitabıyla çalışmak için VBA GETOBJECT işlevini kullanmanın pratik bir örneğine bakalım. Örneğin, bir bilgisayar klasöründe şu Excel çalışma kitabımız var.

Bu çalışma kitabıyla çalışmak için VBA GetObject fonksiyonunu kullanacağız. İlk önce bu çalışma kitabını açalım.

- Makroya isim vererek bir alt prosedür oluşturun.

- Nesne veri türünde bir değişken tanımlayın.

- Bu değişken için, VBA GETOBJECT fonksiyonunu kullanarak çalışma kitabı referansını atayalım.

- VBA GetObject fonksiyonunun yol adı argümanı için, depolandığı yere tam dosya yolu adresini kopyalayın.

- Klasör yolu girildikten sonra açılan çalışma kitabının adının sonuna ters eğik çizgi koyun.

- Şimdi, “Wb” değişkeni “Text.xlsx” çalışma kitabının referansını tutar. Bu değişken adını kullanabilir ve Çalışma Kitabı nesnesinin özelliklerine ve yöntemlerine erişebiliriz.

Ancak, bir nokta girer girmez, IntelliSense listesi çalışma kitabı nesnesiyle ilişkili tüm özellikleri ve yöntemleri göstermelidir. Ancak veri türü olarak “Nesne” kullandığımızda hiçbir şey görmeyiz.
Bu nedenle, IntelliSense'in çalışma kitabı nesnesinin tüm özelliklerini ve yöntemlerini göstermesi için özellikle “Çalışma Kitabı” nesnesini kullanmalıyız. Veri türü adını “Nesne”den “Çalışma Kitabı”na değiştirin.
Şimdi, “Wb” değişkenini kullanın ve bir nokta girin. Workbook nesnesinin tüm özelliklerini ve yöntemlerini göstermelidir.
- Etkinleştirme yöntemini seçin.

Şimdi, VBA kodunu çalıştıralım . “Test.xlsx” çalışma kitabını etkinleştirmeli.
“Test.xlsx” çalışma kitabını etkinleştirdi.
Excel VBA GETOBJECT Fonksiyonunun Örnekleri
Daha iyi anlamanız için VBA GetObject fonksiyonu örneklerini gösterelim.
Örnek 1 – Açılan Çalışma Kitabı Referansını Alın
Otomasyonun bir parçası olarak sıklıkla birden fazla çalışma kitabıyla çalışırız. Bu gibi senaryolarda çalışma kitabının referansını değişkenlerden birine almamız gerekir.

Sub VBA_GetObject_Ex1()
'Çalışma kitabı referansını atamak için bir değişken tanımlayın
Dim MyWorkbook As Workbook
'Konum klasörünü depolamak için bir değişken tanımlayın
Dim Location As String
'Konum klasörü yolunu değişkene atayın
'Sonunda çalışma kitabı adını daha sonra atamak için ters eğik çizgi () atadık
Location = “C:\Users\jeevanay\Desktop\Charticulator\New folder\”
'Çalışma kitabı referansını MyWorkbook değişkenine atayın
Set MyWorkbook = GetObject(Location & “Sales Report.xlsx”)
'VBA GetObject işlevinin değişkenini kullanın
'Çalışma kitabını etkinleştirin
MyWorkbook.Activate
'Başvurulan çalışma kitabına bir değer ekleyin
MyWorkbook.Worksheets(“Sheet1”).Range(“A1”).Value = “Merhaba!!!”
End Sub
VBA GetObject fonksiyonu, açılan çalışma kitabının referansını almamıza yardımcı olur. Aşağıdaki kod, “MyWorkbook” değişkeninin çalışma kitabı referansını alacaktır.
Not: Bu kodu çalıştırmak için öncelikle “Satış Raporu.xlsx” adlı çalışma kitabını açmalıyız . Kodu çalıştırdığımızda, başvurulan çalışma kitabındaki “Merhaba !!!” değeri çalışma sayfasındaki A1 hücresine eklenecektir.

Örnek 2 – VBA GetObject Fonksiyonu ile Microsoft Word Belgesi Oluşturma
Excel dosyasından çalışma belgesi nesnesini VBA GetObject işlevini kullanarak başlatabiliriz. Örneğin, bilgisayar klasörümüzde kayıtlı bir Word belgemiz, “Test Document.docx” olduğunu varsayalım. VBA GetObject işlevini kullanarak bu Word belgesini açmayı ve etkinleştirmeyi deneyelim.
Referans olması açısından kod aşağıdadır.

Sub VBA_GetObject_Ex2()
'Çalışma kitabı referansını atamak için bir değişken tanımlayın
Dim MyWordDoc As Object
'Çalışma uygulamasını Excel'den başlatın
Set MyWordDoc = GetObject(, “Word.Application”)
'Verilen konum klasöründeki Word belgesini açın
MyWordDoc.Documents.Open (“C:\Users\jeevanay\Desktop\Charticulator\New folder\Test Document.docx”)
'Word belgesi açıldığında, Word belgesini etkinleştirelim
MyWordDoc.Activate
End Sub
Kodu çalıştıralım. Verilen klasörden word belgesini aktifleştirecektir.

Yukarıdaki görselde görüldüğü üzere “Test Document.docx” olarak kaydedilen word belgesi, VBA GetObject fonksiyonunu kullanan verilen kod ile açılıp aktif hale getiriliyor.
Dikkat Edilmesi Gereken Önemli Noktalar
- VBA GetObject fonksiyonu, belirtilen klasör yolu doğru değilse aşağıdaki hatayı döndürür: Çalışma zamanı hatası '5174' Üzgünüz, dosyanızı bulamadık. Taşındı mı, yeniden adlandırıldı mı veya silindi mi?
- Excel çalışma kitabını açmaz ve değişken aracılığıyla erişmeye çalışırsak VBA GetObject fonksiyonu aşağıdaki hatayı döndürür. Çalışma Zamanı hatası '432' Otomasyon işlemi sırasında dosya adı veya sınıf adı bulunamadı.
- VBA GetObject fonksiyonu nesnelere atıfta bulunduğundan, değişkenlere nesne referansları atarken “Set” anahtar sözcüğünü kullanırız.
- VBA GetObject fonksiyonunun ikinci argümanı, ilk argümanı göz ardı ettiğimizde zorunlu hale gelir.
