Özet
Microsoft Visual Basic'te Bir Microsoft Office uygulamasının örneğini oluşturmak için New işlecini veya CreateObject işlevini kullandığınızda, aşağıdaki hata iletisini alabilirsiniz:
Çalışma zamanı hatası '429': ActiveX bileşeni nesne oluşturamıyor
Bileşen Nesne Modeli (COM) istenen Otomasyon nesnesini oluşturamadığında ve Otomasyon nesnesi bu nedenle Visual Basic tarafından kullanılamadığında bu hata oluşur. Bu hata tüm bilgisayarlarda oluşmaz.
Bu makalede, bu hataya neden olabilecek yaygın sorunları tanılama ve çözme işlemleri açıklanmaktadır.
Ek Bilgi
Visual Basic'te 429 hatasının çeşitli nedenleri vardır. Aşağıdaki koşullardan herhangi biri doğruysa hata oluşur:
-
Uygulamada bir hata var.
-
Sistem yapılandırmasında bir hata var.
-
Eksik bir bileşen var.
-
Hasarlı bir bileşen var.
Hatanın nedenini bulmak için sorunu yalıtın. İstemci bilgisayarda "429" hata iletisini alırsanız, Microsoft Office uygulamalarında hatayı yalıtmak ve çözmek için aşağıdaki bilgileri kullanın.
Not Aşağıdaki bilgilerden bazıları Office dışı COM sunucuları için de geçerli olabilir. Ancak, bu makalede Office uygulamalarını otomatikleştirmek istediğiniz varsayılır.
Kodu inceleme
Hatayı gidermeden önce soruna neden olabilecek tek bir kod satırını yalıtmaya çalışın.
Soruna tek bir kod satırının neden olabileceğini fark ederseniz şu yordamları tamamlayın:
-
Kodun açık nesne oluşturma kullandığından emin olun.
Sorunların tek bir eyleme daraltılıp daraltılamadığını belirlemek daha kolaydır. Örneğin, aşağıdakilerden biri olarak kullanılan örtük nesne oluşturmayı arayın.
Kod örneği 1Application.Documents.Add 'DON'T USE THIS!!
Kod örneği 2
Dim oWordApp As New Word.Application 'DON'T USE THIS!! '... some other code oWordApp.Documents.Add
Bu kod örneklerinin her ikisi de örtük nesne oluşturma kullanır. Microsoft Office Word 2003, değişken en az bir kez çağrılana kadar başlatılmaz. Değişken programın farklı bölümlerinde çağrılabileceği için sorunu bulmak zor olabilir. Sorunun Uygulama nesnesi oluşturulduğunda veya Document nesnesi oluşturulduğunda kaynaklandığını doğrulamak zor olabilir.
Bunun yerine, her nesneyi aşağıdaki gibi ayrı ayrı oluşturmak için açık çağrılar yapabilirsiniz.Dim oWordApp As Word.Application Dim oDoc As Word.Document Set oWordApp = CreateObject("Word.Application") '... some other code Set oDoc = oWordApp.Documents.Add
Her nesneyi ayrı ayrı oluşturmak için açık çağrılar yaptığınızda, sorunu yalıtmak daha kolaydır. Bu, kodun okunmasını da kolaylaştırabilir.
-
Bir Office uygulamasının örneğini oluştururken New işleci yerine CreateObject işlevini kullanın.
CreateObject işlevi, çoğu Microsoft Visual C++ istemcinin kullandığı oluşturma işlemini yakından eşler. CreateObject işlevi, sürümler arasında sunucunun CLSID'sinde değişikliklere de izin verir. CreateObject işlevini erken bağlanan nesnelerle ve geç bağlanan nesnelerle kullanabilirsiniz. -
CreateObject'e
geçirilen "ProgID" dizesinin doğru olduğunu doğrulayın ve ardından "ProgID" dizesinin sürümden bağımsız olduğunu doğrulayın. Örneğin, "Excel.Application.8" dizesini kullanmak yerine "Excel.Application" dizesini kullanın. Başarısız olan sistem, Microsoft Office'in eski bir sürümüne veya Microsoft Office'in "ProgID" dizesinde belirttiğiniz sürümden daha yeni bir sürümüne sahip olabilir. -
Başarılı olmayan kod satırının satır numarasını raporlamak için Erl komutunu kullanın. Bu, IDE'de çalıştıramayan uygulamalarda hata ayıklamanıza yardımcı olabilir. Aşağıdaki kod, hangi Otomasyon nesnesinin oluşturulamayacağını bildirir (Microsoft Word veya Microsoft Office Excel 2003):
Dim oWord As Word.Application Dim oExcel As Excel.Application On Error Goto err_handler 1: Set oWord = CreateObject("Word.Application") 2: Set oExcel = CreateObject("Excel.Application") ' ... some other code err_handler: MsgBox "The code failed at line " & Erl, vbCritical
Hatayı izlemek için MsgBox işlevini ve satır numarasını kullanın.
-
Geç bağlamayı aşağıdaki gibi kullanın:
Dim oWordApp As Object
Erken bağlanan nesneler, özel arabirimlerinin işlem sınırları boyunca sıralanmış olmasını gerektirir. Özel arabirim CreateObject veya New sırasında sıralanamıyorsa, "429" hata iletisini alırsınız. Geç bağlanan bir nesne, özel bir proxy'nin sıralanması gerektirmeyen IDispatch sistem tanımlı arabirimini kullanır. Bu yordamın düzgün çalıştığını doğrulamak için geç bağlanan bir nesne kullanın.
Sorun yalnızca nesne erken sınırlandığında oluşuyorsa, sorun sunucu uygulamasındadır. Genellikle, sorunu düzeltmek için bu makalenin "Otomasyon Sunucusunu İnceleme" bölümünde açıklandığı gibi uygulamayı yeniden yükleyebilirsiniz.
Otomasyon sunucusunu inceleme
CreateObject veya New kullandığınızda bir hatanın oluşmasının en yaygın nedeni, sunucu uygulamasını etkileyen bir sorundur. Genellikle, uygulamanın yapılandırması veya uygulamanın kurulumu soruna neden olur. Sorun gidermek için aşağıdaki yöntemleri kullanın:
-
Otomatikleştirmek istediğiniz Office uygulamasının yerel bilgisayara yüklendiğini doğrulayın. Uygulamayı çalıştırabildiğinize emin olun. Bunu yapmak için Başlat'a tıklayın,Çalıştır'a tıklayın
ve ardından uygulamayı çalıştırmayı deneyin. Uygulamayı el ile çalıştıramıyorsanız, uygulama otomasyon aracılığıyla çalışmaz. -
Uygulamayı aşağıdaki gibi yeniden kaydedin:
-
Başlat'a ve ardından Çalıştır'a tıklayın.
-
Çalıştır iletişim kutusunda, sunucunun yolunu yazın ve satırın sonuna /RegServer ekleyin.
-
Tamam'a tıklayın.
Uygulama sessiz çalışır. Uygulama, COM sunucusu olarak yeniden kaydedilir.
Sorun bir kayıt defteri anahtarı eksik olduğu için oluşursa, bu adımlar genellikle sorunu çözer.
-
-
Otomatikleştirmek istediğiniz uygulamanın CLSID altındaki LocalServer32 anahtarını inceleyin. LocalServer32 anahtarının uygulama için doğru konumu gösterdiğinden emin olun. Yol adının kısa yol (DOS 8.3) biçiminde olduğundan emin olun. Bir sunucuyu kısa yol adı kullanarak kaydetmeniz gerekmez. Ancak, katıştırılmış boşluklar içeren uzun yol adları bazı sistemlerde sorunlara neden olabilir.
Sunucu için depolanan yol anahtarını incelemek için Windows Kayıt Defteri Düzenleyicisi'ni aşağıdaki gibi başlatın:-
Başlat'a ve ardından Çalıştır'a tıklayın.
-
regedit yazın ve Tamam'a tıklayın.
-
HKEY_CLASSES_ROOT\CLSID anahtarına gitme.
Sistemdeki kayıtlı otomasyon sunucularının CLSID'leri bu anahtarın altındadır. -
Otomatikleştirmek istediğiniz Office uygulamasını temsil eden anahtarı bulmak için CLSID anahtarının aşağıdaki değerlerini kullanın. Yol için CLSID anahtarının LocalServer32 anahtarını inceleyin.
Office sunucusu
CLSID anahtarı
Access.Application
{73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}
Excel.Application
{00024500-0000-0000-C000-00000000046}
Outlook.Application
{0006F03A-0000-0000-C000-00000000046}
PowerPoint.Application
{91493441-5A91-11CF-8700-00AA0060263B}
Word.Application
{000209FF-0000-0000-C000-00000000046}
-
Dosyanın gerçek konumuyla eşleştiğinden emin olmak için yolu denetleyin.
Yükleme dosyasının doğru sürümü ve sağlaması olduğunda Algıla ve Onar bu dosyanın üzerine kopyalamaz. Kısa yol adları doğru olmadığında doğru görünebilir. Örneğin, hem Office hem de Microsoft Internet Explorer (varsayılan konumlarında yüklüyse) C:\PROGRA~1\MICROS~X\ (burada
X bir sayıdır) benzeri kısa bir yola sahiptir. Bu ad başlangıçta kısa bir yol adı olarak görünmeyebilir.
Yolun doğru olup olmadığını belirlemek için şu adımları izleyin:-
Başlat'a ve ardından Çalıştır'a tıklayın.
-
Değeri kayıt defterinden kopyalayın ve çalıştır iletişim kutusuna yapıştırın.
Not Uygulamayı çalıştırmadan önce /automation anahtarını kaldırın. -
Tamam'a tıklayın.
-
Uygulamanın doğru çalıştığını doğrulayın.
Tamam'a tıkladıktan sonra uygulama çalıştırılırsa sunucu doğru şekilde kaydedilir. Tamam'a tıkladıktan sonra uygulama çalışmazsa LocalServer32 anahtarının değerini doğru yolla değiştirin. Yapabilirseniz kısa bir yol adı kullanın.
-
-
Normal.dot şablonunun veya Excel.xlb kaynak dosyasının olası bozulmasını test edin. Word'deki Normal.dot şablonu veya Excel'deki Excel.xlb kaynak dosyası bozuksa Microsoft Word veya Microsoft Excel'i otomatikleştirdiğinizde sorunlar oluşabilir. Bu dosyaları test etmek için yerel sabit disklerde Normal.dot veya Excel.xlb'nin tüm örneklerini arayın.
Not Bu dosyaların birden çok kopyasını bulabilirsiniz. Sistemde yüklü olan her kullanıcı profili için bu dosyaların her birinin bir kopyası vardır.
Normal.dot dosyalarını veya Excel.xlb dosyalarını geçici olarak yeniden adlandırın ve otomasyon testinizi yeniden çalıştırın. Hem Word hem de Excel bu dosyaları bulamazsa oluşturur. Kodun çalıştığını doğrulayın. Yeni bir Normal.dot dosyası oluşturulduğunda kod çalışıyorsa, yeniden adlandırdığınız dosyaları silin. Bu dosyalar bozuk. Kod işe yaramazsa, bu dosyalara kaydedilen özel ayarları kaydetmek için bu dosyaları özgün dosya adlarına geri döndürmeniz gerekir. -
Uygulamayı Yönetici hesabı altında çalıştırın. Office sunucuları, kayıt defterine ve disk sürücüsüne Okuma/Yazma erişimi gerektirir. Geçerli güvenlik ayarlarınız Okuma/Yazma erişimini reddederse Office sunucuları doğru yüklenmeyebilir.
Sistemi inceleme
Sistem yapılandırması, işlem dışı COM sunucularının oluşturulmasında da sorunlara neden olabilir. Sorun gidermek için, hatanın oluştuğu sistemde aşağıdaki yöntemleri kullanın:
-
Sorunun herhangi bir işlem dışı sunucuda oluşup oluşmadığını belirleyin. Belirli bir COM sunucusu (Word gibi) kullanan bir uygulamanız varsa, sorunun COM katmanında oluşmadığından emin olmak için farklı bir işlem dışı sunucuyu test edin. Bilgisayarda işlem dışı bir COM sunucusu oluşturamıyorsanız, bu makalenin "Microsoft Office'i Yeniden Yükleme" bölümünde açıklandığı gibi OLE sistem dosyalarını yeniden yükleyin veya sorunu çözmek için işletim sistemini yeniden yükleyin.
-
Otomasyonu yöneten OLE sistem dosyalarının sürüm numaralarını inceleyin. Bu dosyalar genellikle bir küme olarak yüklenir. Bu dosyaların derleme numaralarıyla eşleşmesi gerekir. Yanlış yapılandırılmış bir kurulum yardımcı programı yanlışlıkla dosyaları ayrı olarak yükleyebilir. Bu, dosyaların uyumsuzluğuna neden olur. Otomasyonda sorun yaşamamak için dosyaları inceleyerek dosya derlemelerinin eşleştiğinden emin olun.
Otomasyon dosyaları Windows\System32 dizininde bulunur. Aşağıdaki dosyaları inceleyin.Dosya adı
Sürüm
Değiştirme tarihi
Asycfilt.dll
10.0.16299.15
29 Eylül 2017, Cumartesi
Ole32.dll
10.0.16299.371
29 Mart 2018, Mart 2018, Mart 2018, Mart 2018, Mart
Oleaut32.dll
10.0.16299.431
3 Mayıs 2018, Mayıs 2018
Olepro32.dll
10.0.16299.15
29 Eylül 2017, Cumartesi
Stdole2.tlb
3.0.5014
29 Eylül 2017, Cumartesi
Dosya sürümünü incelemek için Windows Gezgini'nde dosyaya sağ tıklayın ve ardından Özellikler'e tıklayın. Dosya sürümünün son dört basamağını (derleme numarası) ve dosyanın son değiştirilme tarihini not edin. Bu değerlerin tüm otomasyon dosyaları için aynı olduğundan emin olun.
Not Aşağıdaki dosyalar Windows 10 Sürüm 1709, derleme 16299.431 içindir. Bu sayılar ve tarihler yalnızca örnektir. Değerleriniz farklı olabilir. -
Office uygulamasında
çalışan kodu kısıtlayan üçüncü taraf uygulamaların hizmetlerini ve sistem başlatmasını incelemek için Sistem Yapılandırması yardımcı programını (Msconfig.exe) kullanınNot Virüsten koruma programını yalnızca ağa bağlı olmayan bir test sisteminde geçici olarak devre dışı bırakın.
Alternatif olarak, üçüncü taraf eklentilerini devre dışı bırakmak için Outlook'ta şu adımları izleyin:
Bu yöntem sorunu çözerse, virüsten koruma programının güncelleştirmesi hakkında daha fazla bilgi için üçüncü taraf virüsten koruma yazılımı satıcısına başvurun.-
Dosya menüsünde Seçenekler'e ve ardından Eklentiler'e tıklayın.
-
COM eklentilerini yönet'e ve ardından Git'e tıklayın.
Not COM eklentileri iletişim kutusu açılır. -
Herhangi bir üçüncü taraf eklentisinin onay kutusunu temizleyin ve ardından Tamam'a tıklayın.
-
Outlook'u yeniden başlatın.
-
Office'i yeniden yükleme
Önceki yordamlardan hiçbiri sorunu çözmezse, Office'i kaldırıp yeniden yükleyin.
Daha fazla bilgi için aşağıdaki Office makalesine bakın:
PC veya Mac'te Office 365 veya Office 2016'ya indirme ve yükleme veya yeniden yükleme
Başvurular
Office otomasyonu ve kod örnekleri hakkında daha fazla bilgi için aşağıdaki Microsoft web sitesine gidin: