Diğer uygulamalardaki işlevleri kullanmak istediğinizde, kullanmak isteyip istemediğinize karar vermelisiniz.
nesne değişkenlerinin erken veya geç bağlanması.
Erken bağlama
Nesne değişkeni ile nesne arasındaki bağlama, uygulama derlendiğinde gerçekleşir.
Bu, uygulama çalıştırıldığında bağlamanın gerçekleştiği zamana kıyasla (geç bağlama) daha iyi performans sağlar.
Erken bir bağlama oluşturmak istiyorsanız, kullanmak istediğiniz "yabancı" nesne kitaplığına bir başvuru ayarlamanız gerekir.
Bu, Araçlar, Referanslar… menüsü kullanılarak VBE'den yapılır. Bir VBProject bir referansa sahip olduğunda
nesne kitaplığı belirli nesne değişkenlerini bildirebilirsiniz (örn. Dim oDoc As Word.Document). Bu da yapacak
VBE, özelliklerle ilgili aynı programlama yardımını göstereceğinden, "yabancı nesneleri" programlamak daha kolaydır,
Çalıştığınız uygulamaya ait nesneler için gösterdiği yöntemler ve olaylar
(VBE, bu uygulamaya referansı önceden otomatik olarak eklemiştir).
Bu, vba otomasyon hatasını gösteren genel bir kod örneğidir:
Sub OLEAutomationEarlyBinding() ' xxx'i aşağıdakilerden biriyle değiştirin: ' Access, Excel, Outlook, PowerPoint veya Word Dim oApp As xxx.Application ' erken bağlama Dim oDoc As xxx.Document ' Excel.Workbook, Outlook.MailItem, PowerPoint.Presentation , Word.Document On Error Resume Next ' hataları yoksay Set oApp = GetObject(, "xxx.Application") ' mevcut bir uygulama örneğine başvurur Eğer oApp Hiçbir Şey Değilse ' mevcut uygulama çalışmıyorsa Set oApp = New xxx.Application ' bir yeni uygulama örneği End If On Error GoTo 0 ' normal hata işlemeye devam et Eğer oApp Hiçbir Şey Değilse ' uygulamayı oluşturamıyor MsgBox "Uygulama mevcut değil!", vbExclamation End If With oApp .Visible = True ' uygulama nesnesini yap görünür ' bu noktada uygulama görünür durumdadır ' uygulamaya bağlı olarak bir şeyler yapın… Set oDoc = .Documents.Open("c:\klasöradı\dosyaadı.doc") ' bir belge açın '… oDoc.Close True ' kapatın ve kaydedin belge .Quit ' uygulamayı kapat End With Set oDoc = Hiçbir şey ' boş hafıza Set oApp = Hiçbir şey ' boş hafıza End Sub
Geç bağlama
Nesne değişkeni ile nesne arasındaki bağlama, uygulama çalıştırıldığında gerçekleşir.
Bu, uygulama derlendiğinde (erken bağlama) bağlamanın gerçekleştiği zamana kıyasla daha yavaş performansa neden olur.
"Yabancı" uygulamaya ait nesne kitaplığına bir referans eklemezseniz,
genel nesne değişkenlerini bildirir (örn. Dim oDoc As Object). Bu, programlamayı daha da zorlaştıracak
VBE, özelliklerle ilgili aynı programlama yardımını göstermeyeceğinden "yabancı nesneler",
çalıştığınız uygulamaya ait nesneler için görüntülediği yöntemler ve olaylar.
Bu genel bir kod örneğidir:
Sub OLEAutomationLateBinding() ' xxx'i aşağıdakilerden biriyle değiştirin: ' Access, Excel, Outlook, PowerPoint veya Word Dim oApp As ' geç bağlama Dim oDoc As Object ' geç bağlamada Hata Devam Et Sonraki ' hataları yoksay Set oApp = GetObject(, "xxx.Application") ' mevcut bir uygulama örneğine başvurur Eğer oApp Hiçbir Şey Değilse ' çalışan hiçbir uygulama çalışmıyor Set oApp = CreateObject("xxx.Application") ' yeni bir uygulama örneği oluştur Hata Varsa Sonlandır GoTo 0 ' normal hatayı sürdür işleme Eğer oApp Hiçbir Şey Değilse O zaman ' uygulama oluşturulamıyor MsgBox "Uygulama mevcut değil!", vbExclamation End If With oApp .Visible = True ' uygulama nesnesini görünür yap ' bu noktada uygulama görünür hale gelir ' bağlı olarak bir şeyler yapın uygulamada… Set oDoc = .Documents.Open("c:\foldername\filename.doc") ' bir belge aç '… oDoc.Close True ' kapat ve belgeyi kaydet .Quit ' uygulamayı kapat Set With Set oDoc = Hiçbir şey ' boş hafıza Set oApp = Hiçbir şey ' fr ee bellek End Sub