Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Özet
Bu makalede, Microsoft Office uygulaması'nin çeşitli sürümleriyle GetObject ve CreateObject işlevlerini kullandığınızda oluşan farklı davranışlar ele alınmaktadır.
GetObject ve CreateObject, Microsoft Visual Basic ve Microsoft Visual Basic for Applications (VBA) tarafından sağlanan işlevlerdir. Bununla birlikte, GetObject başvurularını GetActiveObject API'sine çağrı olarak ve CreateObject'e başvurularını CoCreateInstanceAPI çağrısı olarak değerlendirirseniz, bilgiler Microsoft Visual C++ için de geçerlidir.
Daha Fazla Bilgi
GetObject
GetObject, otomasyon sunucusunun çalışan bir örneğine eklemek için kullanılır. GetObject'i çağırmanın birkaç farklı yolu vardır, ancak Microsoft Office uygulaması lications için önerilen söz dizimi aşağıdaki gibidir:
set xlApp = GetObject(, "Excel.Application")
Bu kod yürütürken bir Microsoft Excel örneği çalışıyorsa, xlApp değişkeni aracılığıyla çalışan örneğin nesne modeline erişebilirsiniz. Hiçbir örnek çalışmıyorsa aşağıdaki yakalanabilir çalışma zamanı hata iletisini alırsınız:
Run-time error '429':
ActiveX component can't create object
Microsoft Excel'in birden çok örneği çalışıyorsa, GetObject ilk olarak başlatılan örneğe eklenir. Daha sonra ilk örneği kapatırsanız, GetObject'e yönelik başka bir çağrı, başlatılan ikinci örneğe eklenir ve bu şekilde devam eder.
Bu örnekteki açık bir belgenin adını biliyorsanız, belirli bir örneğe ekleyebilirsiniz. Örneğin, Bir Excel örneği Book2 adlı açık bir çalışma kitabıyla çalışıyorsa, başlatılan en eski örnek olmasa bile aşağıdaki kod bu örneğe başarıyla eklenir:
Set xlApp = GetObject("Book2").Application
CreateObject
CreateObject, Otomasyon sunucusunun yeni bir örneğini başlatmak için kullanılır. Örneğin:
set xlApp = CreateObject("Excel.Application")
Sunucunun SingleUse veya MultiUse olarak tasarlanıp tasarlanmadığına bağlı olarak, başka bir sunucu işlemi başlatılabilir veya başlatılamayabilir. Bu, otomasyon örneğini zorla kapatmanız gerekip gerekmediğine karar vermek için önemli bir ayrım olabilir. Örneğin MultiUse sunucusuyla, bir örnek eklemeden önce zaten çalışıyorsa, otomatikleştirmeyi bitirdiğinizde sunucuyu program aracılığıyla kapatmaktan kaçınmak isteyebilirsiniz.
Aşağıdaki tablo, Microsoft Office ile bir çözüm uygularken yararlı bir başvuru görevi görür. Microsoft Office'in çeşitli sürümlerinin ve uygulamalarının davranışlarını ve özniteliklerini listeler. Örneğin, sunucunun başlatıldığında varsayılan olarak görünür olup olmadığı, SingleUse veya MultiUse olması, UserControl özelliğine sahip olması, Quit yöntemine sahip olması ve ana penceresinin sınıf adı gibi.
Uygulamalar | Görünür | Örnek Oluşturma | UserControl Var | QuitClassName var | Sınıf adı |
---|---|---|---|---|---|
Excel 97, 2000, 2002, 2003, 2007 | Hayır | Tek Kullan | Yes | Yes | XlMain |
Word 97, 2000, 2002, 2003, 2007 | Hayır | Tek Kullan | Yes | Yes | OpusApp |
PowerPoint 97 | Hayır | Çoklu Kullan | Hayır | Evet | PP97FrameClass |
PowerPoint 2000 | Hayır | Çoklu Kullan | Hayır | Evet | PP9FrameClass |
PowerPoint 2002 | Hayır | Çoklu Kullan | Hayır | Evet | PP10FrameClass |
PowerPoint 2003 | Hayır | Çoklu Kullan | Hayır | Evet | PP11FrameClass |
PowerPoint 2007 | Hayır | Çoklu Kullan | Hayır | Evet | PP12FrameClass |
Access 97 | Yes | Tek Kullan | Yes | Yes | OMain |
Access 2000, 2002, 2003, 2007 | Hayır | Tek Kullan | Yes | Yes | OMain |
Project 98, 2000 | Hayır | Çoklu Kullan | Yes | Yes | JWinproj-WhimperMainClass |
Ana pencere sınıfı adı, herhangi bir örneğin zaten çalışıp çalışmadığını rahatça öğrenmek istediğinizde FindWindow API'sini çağırmak için yararlıdır. UserControl özelliği, sunucu uygulamasının son başvurusu serbest bırakıldığında otomatik olarak kapanıp kapanmadığını (hiçbir şey olarak ayarlanmadı) belirten bir boole özelliğidir. Quit yöntemi, gerekli olduğu durumlarda UserControl özelliğini geçersiz kılmanıza olanak tanır (örneğin, son başvuru yayımlandıktan sonra bir örnek kapatılmadığında).
Genel olarak Microsoft, kullanıcının kullandığı örneğe eklemek yerine yeni bir Office uygulaması lication örneği kullanmanızı önerir. En iyisi Application ProgID kullanarak bir örnek oluşturmak ve ardından buradan yeni nesneler açmak veya oluşturmaktır. Excel.Sheet ve Word.Document gibi diğer ProgID'ler OLE'de (Nesne bağlama ve Ekleme) kullanılmak üzere tasarlanmıştır ve CreateObject ile kullanıldığında tutarsız sonuçlar verebilir. Application ProgID kullanarak, sunucuyu Otomasyon için açıkça başlatarak (Ekleme değil) olası sorunlardan kaçınmış olursunuz.
Otomasyon sunucusuyla işiniz bittiğinde, sunucuya tüm başvurularınızı bırakın ve sunucunun beklendiği gibi kapanması için Quit yöntemini (varsa) çağırın. Otomasyon aracılığıyla bir örneği yapılandırmak ve ardından kullanıcının kullanması için açık bırakmak istiyorsanız, UserControl özelliğini TRUE olarak ayarlamanız ve sonra tüm başvurularınızı serbest bırakmanız gerekir. Ardından sunucu çalışır durumda kalır (UserControl özelliği TRUE olduğundan) ve kullanıcı uygulamayı kapattığında (bekleyen başvuru olmadığından) uygun şekilde kapanır.
Not Word için UserControl özelliği salt okunurdur. Doğru veya Yanlış olarak ayarlanamaz. Son başvuru yayımlandığında Word her zaman çalışır durumda kalır.