EXCEL VBA'DA NESNE OLUŞTURMA [CREATEOBJECT]

 

VBA CreateObject, VBA Excel'deki ActiveX nesnelerine başvurmak için bir fonksiyondur. CreateObject, Excel dışındaki bazı nesnelere, yani MS Word, MS PowerPoint, vb. başvurmamıza yardımcı olur. Excel'deki nesnelere başvurmaya çalıştığımızda bunu iki şekilde yaparız, yani Erken Bağlama ve Geç Bağlama. Örneğin, aşağıdaki koda bakın.


Sub Create_Object()
Dim Power_Point As Object
Power_Point = CreateObject(“PowerPoint.Application”)
Power_Point.Visible = True
End Sub

Bu kod, PowerPoint uygulamasının nesne referansını Excel dışında ayarlayacaktır.

ÖNEMLİ NOKTALAR

  • VBA CreateObject, değişkenler aracılığıyla gerekli dış nesneye referanslar oluşturmamıza yardımcı olur.
  • Bir nesneye iki yöntem kullanarak başvurabiliriz; bunlar Erken Bağlama ve Geç Bağlama'dır.
  • Microsoft PowerPoint uygulamasını VBA CreateObject fonksiyonu ile başlatabiliriz.
  • Microsoft Word uygulamasını VBA CreateObject fonksiyonu ile başlatabiliriz.
  • Shell.Application metodunu kullanarak Microsoft Edge uygulamasını başlatabiliriz.

VBA'da CreateObject Fonksiyonunun Sözdizimi

Aşağıda VBA CreateObject fonksiyonunun sözdizimi yer almaktadır.

CreateObject (Class As String, [Server Name As String])

  • Class [Sınıf]:  Bu argümanda, daha önce tanımlanan değişkeni kullanarak referansını ayarlamak istediğimiz nesneyi sağlamamız gerekiyor.
  • Sunucu Adı [Server Name]:  Bu isteğe bağlı bir argümandır. Bu argümanı yoksayarsak, varsayılan olarak yerel makine referansını alacaktır.

Excel VBA'da CreateObject Nasıl Kullanılır?

VBA CreateObject işlevini adım adım bir yaklaşımla kullanmanın basit bir örneğini gösterelim. MS Word belgesini Excel'den başlatmamız gerektiğini varsayalım, ardından Excel VBA'dan bir MS Word nesnesi oluşturmak için aşağıdaki adımları kullanacağız.

  1. Açık Excel çalışma sayfanızdan “ALT + F11” kısayol tuşuna basarak Visual Basic düzenleyici penceresini açın.

  2. Makroyu aşağıdaki gibi adlandırarak Visual Basic Düzenleyicisi kod penceresinde alt prosedürü başlatın.


    Excel VBA'da CreateObject Nasıl Kullanılır - Adım 2

  3. Bir değişken tanımlayın ve ona “Nesne” veri türünü atayın.


    Excel VBA'da CreateObject Nasıl Kullanılır - Adım 3

    Not: Burada, Excel'de "MS Word" gibi bir veri türü olmadığı için yalnızca nesne veri türünü atadık. Bu nedenle, Nesne veri türü ve tanımlanan değişken yardımıyla bir nesne referansı oluşturmalıyız.

  4. Şimdi, “MSWord_App” değişkenini kullanacağız ve VBA CreateObject’i kullanarak buna MS Word uygulama nesnesi referansını atacağız.


    Excel VBA'da CreateObject Nasıl Kullanılır - Adım 4

    Bir nesne değişkeninden bahsettiğimiz için “SET” anahtar sözcüğünü kullanmalıyız.

  5. “MSWord_App” değişkeni artık MS Word uygulama nesnesine erişebilir. MS Word uygulama nesnesinin visible özelliğini true olarak ayarlayın.


    Excel VBA'da CreateObject Nasıl Kullanılır - Adım 5

    Bu VBA CreateObject'in en büyük dezavantajı, MS Word uygulama nesnesiyle ilişkili özellikleri ve yöntemleri gösterecek olan IntelliSense listesini göremememizdir.

    Kodu çalıştıralım ve MS Word uygulamasının açılıp açılmadığına bakalım.

VBA'da CreateObject Fonksiyonunun Örnekleri

Excel VBA'da CreateObject fonksiyonunun kullanımına dair farklı örnek kümelerini gösterelim.

Örnek 1 – VBA CreateObject Fonksiyonunu Kullanarak Excel'den MS PowerPoint'i Çağırma

VBA CreateObject kullanmanın önemini göstermeden önce, geç bağlamaya bakalım. Daha önce de söylediğimiz gibi, VBA'da nesnelere iki şekilde başvurabiliriz, yani Erken Bağlama ve Geç Bağlama.

Geç bağlama, CreateObject fonksiyonunu kullanırken, erken bağlama, VBA nesneler kitaplığında bir nesne referansının ayarlanmasını gerektirir.

Erken Bağlama

PowerPoint nesnesine VBA'dan erişmemiz gerektiğini varsayalım. Örneğin, aşağıdaki görüntüye bakın.

Excel VBA CreateObject - Erken Bağlama

PowerPoint'i değişkene ayarlamayı denediğimizde IntelliSense listesinde görünmüyor. VBA nesneleri kitaplığında kullanılabilir hale getirmek için, Nesneler kitaplığında PowerPoint'e referansı ayarlamalıyız.

  • Adım 1: “Araçlar”a gidin ve “Referanslar”a tıklayın.
Erken Bağlama - Adım 1
  • Adım 2: Aşağıdaki “Referanslar – VBA Projesi” penceresi açılacaktır.
Erken Bağlama - Adım 2
  • Adım 3: Bu pencereden “Microsoft PowerPoint 16.0 Nesne Kitaplığı”nı seçin. Not: Sürüm, sahip olduğunuz lisansa göre değişebilir.
Erken Bağlama - Adım 3a

Tamam'a tıklayın. Artık PowerPoint nesnelerine erişebiliriz. Örneğin, aşağıdaki görüntüye bakın.

Erken Bağlama - Adım 3b

PowerPoint nesnesi uygulamada görünür durumdadır ve artık bu referansı kullanarak PowerPoint'i çağırabiliriz. Örneğin, aşağıdaki koda bakın.

Erken Bağlama - Adım 3c

Sub Power_Point_EarlyBinding()
Dim PPT As PowerPoint
Set PPT = New PowerPoint.Application
PPT.Visible = msoCTrue
End Sub

Gördüğümüz gibi burada VBA CreateObject kullanmıyoruz. Bunun yerine, referansı Microsoft PowerPoint kitaplığına ayarlıyoruz.

Bu yöntemin bir dezavantajı, dosyayı birine gönderirsek, yukarıdaki adımları kullanarak bir nesne referansı da ayarlamaları gerekmesidir. Aksi takdirde, bu kod onların sisteminde çalışmayacaktır.

Bu yöntemin bir yararı, IntelliSense listesinin PowerPoint nesnesi altında bulunan tüm özellikleri ve yöntemleri göstermesidir.

Geç Bağlama

Geç bağlama herhangi bir nesne referans ayarı gerektirmez. Dosyayı alan kullanıcı hiçbir şeyi değiştirmeden kodu kullanabilir.

Örneğin aşağıdaki koda bakın.

Excel VBA CreateObject - Geç Bağlama

Sub Power_Point_LateBinding()
Dim PPT As Object
Set PPT = CreateObject(“PowerPoint.Application”)
PPT.Visible = True
End Sub

PowerPoint'i çağıracağız ve uygulamanın sistemimizde açık olduğunu görebileceğiz.

Geç Bağlama - 2

PowerPoint başlatıldığında, sunuyu oluşturmak için diğer özellikleri ve yöntemleri kullanabiliriz.

Örnek 2 – Excel Uygulamasını VBA CreateObject'ten Başlatma

(VBA CreateObject Excel.Application)

VBA CreateObject fonksiyonunu kullanarak Excel uygulamasını başlatabiliriz. Aşağıda listelenen adımları izleyin.

  • Adım 1: Bir değişken tanımlayın ve ona bir nesne değişkeni atayın.
Örnek 2 - Adım 1
  • Adım 2: Şimdi tanımlanan değişken için Excel uygulama uygulamasını ayarlayın.
Örnek 2 - Adım 2
  • Adım 3: Excel_App değişkeni Excel uygulamasına referansı tutar. Bu değişkeni kullanarak Excel uygulamasını görünür hale getirebiliriz.
Örnek 2 - Adım 3
  • Adım 4: Şimdi görünen Excel uygulamasında A1 hücresine bir değer girelim.
Örnek 2 - Adım 4a

Excel uygulaması başlatıldı. Kodu çalıştıralım. Yeni bir Excel çalışma kitabı ve “Hello Excel VBA” dizesini görmeliyiz.

Örnek 2 - Adım 4b

Son olarak, değişkeni değerini “Hiçbir Şey” olarak ayarlayarak serbest bırakmalı ve Excel uygulamasından çıkmalıyız. Aşağıda Excel uygulamasını başlatmak ve son olarak çıkmak için tamamlanmış kod bulunmaktadır.

Sub Excel_Application()
‘Declare a variable that holds the object reference
‘Assigning object data type to cause late binding
Dim Excel_App As Object
‘Set the appliction sheet to the variable
Set Excel_App = CreateObject(“Excel.Sheet”)
‘Make the application visible
Excel_App.Application.Visible = True
‘Insert some value to cell A1
Excel_App.Application.Range(“A1”).Value = “Hello Excel VBA”
‘Save the Excel application workbook in the current workbook path folder
‘The name will be Test.xlsx
Excel_App.SaveAs ThisWorkbook.Path & “\Test.xlsx”
‘Quite the Excel application
Excel_App.Application.Quit
‘Set the object variable value to nothing
Set Excel_App = Nothing
End Sub

Bu kodu kopyalayıp hiçbir değişiklik yapmadan kullanabilirsiniz.

Örnek 3 – VBA CreateObject shell.application kullanarak Microsoft Edge Uygulamasının Başlatılması

Microsoft Edge uygulamasını VBA CreateObject fonksiyonunu kullanarak başlatabiliriz. Edge uygulamasını çağırmak, makro kodu içinde çağrılacak bir kabuk betiğini gerektirir.

Aşağıdaki kod Microsoft Edge uygulama nesnesini başlatacaktır.

Excel VBA CreateObject - Örnek 3

Sub Microsoft_Edge()
Dim Msft_Edge As Object
Set Msft_Edge = CreateObject(“Shell.Application”)
Msft_Edge.ShellExecute “microsoft-edge:https://google.com/”
End Sub

  • Kodun Açıklaması
  • Bölüm 1: Bu kod ilk olarak Object veri türünü Msft_Edge değişkenine ayarlar.
  • Bölüm 2: Daha sonra VBA CreateObject Edge uygulama seçeneğini kullanacağız ve kabuk uygulama nesnesini tanımlanan değişkene atayacağız.
  • Bölüm 3: Son olarak, nesne referanslı değişken Msft_Edge'i kullanacağız ve bu değişken aracılığıyla ShellExecute'u yürüteceğiz ve Microsoft Edge uygulama nesnesini kullanarak Google sayfasını açacağız. Bu kodu çalıştırdığımızda, Microsoft Edge tarayıcımızda aşağıdaki sayfayı açacağız.
Örnek 3 - 1

Bu şekilde VBA CreateObject shell.application'ını kullanarak Microsoft Edge uygulamasını CreateObject'ten başlatabiliriz.

Dikkat Edilmesi Gereken Önemli Noktalar

  • Varsayılan olarak harici uygulama nesnelerine referans verilmez; bu nedenle, gerekli nesne için referansı araç çubuğu menüsünden manuel olarak ayarlamamız gerekir.
  • VBA CreateObject fonksiyonu herhangi bir IntelliSense listesi göstermez. Bu nedenle, başvurulan nesnenin tüm sınıfını, özelliklerini ve yöntemlerini bilmek gerekir.
  • Erken bağlama yaklaşımını kullanırsanız (VBA CreateObject işlevi olmadan), dosya alıcısı kodu kullanmadan önce gerekli uygulama nesnesi için referansı da ayarlar.

1. Excel VBA'da New ve CreateObject Arasındaki Fark Nedir?

Yeni yöntem, gerekli nesne referansının VBA nesne kütüphanesinden ayarlanmasını gerektirir, bu nedenle erken bağlamaya neden olur. VBA CreateObject işlevi herhangi bir nesne referansının ayarlanmasını gerektirmez, bu nedenle geç bağlamaya neden olur.

2. VBA'da GetObject ve CreateObject arasındaki fark nedir?

• CreateObject: Bu, belirtilen nesnenin bir örneğini oluşturur.
• GetObject: Bu, bir nesnenin mevcut bir örneğini alır.

3. VBA CreateObject Neden Çalışmıyor?

VBA CreateObject fonksiyonu, verilen uygulama adı doğru değilse veya VBA tarafından tanınamıyorsa çalışmayacaktır.


Yorum Gönder

DT KARİYER KPSS Dünyasına Hoş Geldiniz
Sevgili dostum nasıl yardımcı olabilirim?
Bu alana yazınız...