Microsoft Visual Basic'te New işlecini veya CreateObject işlevini kullanarak bir Microsoft Office uygulamasının örneğini oluşturduğunuzda, aşağıdaki hata iletisini alabilirsiniz:
Çalışma zamanı hatası '429': ActiveX bileşeni nesneyi oluşturamıyor
Bu hata, Bileşen Nesne Modeli'nin (COM) istenen Automation nesnesini oluşturamaması ve bu nedenle Automation nesnesinin Visual Basic'te kullanılamaması nedeniyle oluşur. Bu hata tüm bilgisayarlarda oluşmaz.
Bu makalede, bu hataya neden olabilecek genel sorunların nasıl tanılanacağı ve giderileceği açıklanır.
Visual Basic'te, hata 429'un birkaç nedeni olabilir. Bu hata, aşağıdaki koşullardan biri doğruysa oluşur:
Uygulamada bir hata vardır.
Sistem yapılandırmasında bir hata vardır.
Eksik bir bileşen vardır.
Bozuk bir bileşen vardır.
Hatanın nedenini bulmak için, sorunu yalıtın. Bir istemci bilgisayarda hata 429 alırsanız, Microsoft Office uygulamalarında hatayı yalıtmak ve gidermek üzere aşağıdaki bilgileri kullanın.
Not Aşağıdaki bilgilerin bazıları Office dışındaki COM sunucuları için de geçerli olabilir. Ancak, bu makalede Office uygulamalarını otomatikleştirmek istediğiniz varsayılır.
Kodu inceleme
Hatayı gidermeye başlamadan önce, soruna neden olabilecek tek bir kod satırı belirmeye çalışın.
Soruna neden olabilecek tek bir kod satırı belirlerseniz, şu yordamları uygulayın:
Kodun açık nesne oluşturma kullandığından emin olun.
Sorunlar tek bir eyleme indirgenebilirse daha kolay belirlenir. Örneğin, aşağıdakilere benzer örtük nesne oluşturma kullanımları olup olmadığına bakın.
Kod örneği 1
Application.Documents.Add 'BUNU KULLANMAYIN!!
Kod örneği 2
Dim oWordApp As New Word.Application 'BUNU KULLANMAYIN!!
'... diğer kodlar
oWordApp.Documents.Add
Bu kod örneklerinin her ikisi de örtük nesne oluşturma kullanır. Değişken en az bir kez çağrılıncaya kadar Microsoft Office Word 2003 başlatılmaz. Değişken, programın farklı bölümlerinde çağrılabileceğinden sorunun belirlenmesi zor olabilir. Sorunun, Application nesnesi mi yoksa Document nesnesi mi oluşturulduğunda ortaya çıktığını belirlemek zor olabilir.
Bunun yerine, açık çağrılar yaparak her bir nesneyi aşağıdaki gibi ayrı ayrı oluşturabilirsiniz.
Dim oWordApp As Word.Application
Dim oDoc As Word.Document
Set oWordApp = CreateObject("Word.Application")
'... diğer kodlar
Set oDoc = oWordApp.Documents.Add
Her nesneyi ayrı ayrı oluşturmak üzere açık çağrılar yaptığınızda, sorunu daha kolay yalıtabilirsiniz. Bu, kodun daha kolay okunabilmesini de sağlar.
Office uygulamasının bir örneğini oluştururken New işleci yerine CreateObject işlevini kullanın.
CreateObject işlevi, çoğu Microsoft Visual C++ istemcisinin kullandığı oluşturma işlemine oldukça benzer. CreateObject işlevi ayrıca sunucunun CLSID değerinde farklı sürümler için değişikliklere izin verir. CreateObject işlevini, önceden ve sonradan bağlanan nesnelerle kullanabilirsiniz.
CreateObject işlevine geçirilen "ProgID" dizesinin doğru olduğunu ve sürüme bağımlı olmadığını doğrulayın. Örneğin, "Excel.Application.8" dizesi yerine "Excel.Application" dizesini kullanın. Başarısız olan sistemde, Microsoft Office'in, "ProgID" dizesinde belirtilenden daha eski veya daha yeni bir sürümü olabilir.
Erl komutunu kullanarak, hatalı olan kod satırının satır numarasını bildirin. Bu, IDE modunda çalışamayan uygulamalarda hata ayıklamanıza yardımcı olabilir. Aşağıdaki kod, hangi Automation nesnesinin oluşturulamadığı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")
' ... diğer kodlar
err_handler:
MsgBox "Kod şu satırda başarısız oldu: " & Erl, vbCritical
Hatayı izlemek üzere MsgBox işlevini ve satır numarasını kullanın.
Sonradan bağları aşağıdaki gibi kullanın:
Dim oWordApp As Object
Önceden bağlanan nesneler, özel arabirimlerinin işlem sınırları genelinde sıraya konmasını gerektirir. Özel arabirim CreateObject veya New sırasında sıraya konamazsa, hata 429 alırsınız. Sonradan bağlanan nesneler, IDispatch sistemi tarafından tanımlanan ve özel bir proxy sunucusunun sıraya konmasını gerektirmeyen bir arabirimi kullanır. Sonradan bağlanan bir nesne kullanarak, bu yordamın düzgün çalışıp çalışmadığını doğrulayın.
Sorun, nesne önceden bağlandığında oluşuyorsa, sunucu uygulamasından kaynaklanmaktadır. Tipik olarak, bu makalenin "Otomasyon Sunucusunu İnceleme" bölümünde açıklandığı şekilde uygulamayı yeniden yükleyerek bu sorunu düzeltebilirsiniz.
CreateObject veya New ile ilgili bir hata oluşmasının en sık karşılaşılan nedeni, sunucu uygulamasındaki bir sorundur. Tipik olarak, uygulamanın yapılandırması veya kurulumu soruna neden olur. Sorun gidermek için şu yordamları kullanın:
Otomasyon gerçekleştirmek istediğiniz Office uygulamasının yerel bilgisayarda yüklü olduğunu doğrulayın. Uygulamayı çalıştırabildiğinizden emin olun. Bunu yapmak için, Başlat'ı tıklatın, Çalıştır'ı tıklatın ve sonra da uygulamayı çalıştırmayı deneyin. Uygulama el ile çalıştırılamazsa, otomasyon yoluyla da çalışmaz.
Uygulamayı aşağıdaki şekilde yeniden kaydettirin:
Başlat'ı ve ardından Çalıştır'ı tıklatın.
Çalıştır iletişim kutusuna sunucunun yolunu yazın ve satır sonuna /RegServer ekleyin.
Tamam'ı tıklatın.
Uygulama sessizce çalışır. Uygulama bir COM sunucusu olarak yeniden kaydettirilir.
Sorun, bir kayıt defteri anahtarı eksik olduğu için oluşuyorsa, bu adımlar sorunu gidermelidir.
Otomasyon gerçekleştirmek istediğiniz uygulamanın CLSID değeri altındaki LocalServer32 anahtarını inceleyin. LocalServer32 anahtarının uygulama için doğru konuma işaret ettiğinden emin olun. Yol adının kısa yol (DOS 8.3) biçiminde olduğunu doğrulayın. Sunucuyu bir kısa yol adı kullanarak kaydettirmeniz gerekli değildir. Ancak, 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 şekilde başlatın:
Başlat'ı ve ardından Çalıştır'ı tıklatın.
regedit yazın ve Tamam'ı tıklatın.
HKEY_CLASSES_ROOT\CLSID anahtarına gidin.
Sistemdeki kayıtlı otomasyon sunucularının CLSID değerleri bu anahtar altındadır.
CLSID anahtarının aşağıdaki değerlerini kullanarak, otomasyon gerçekleştirmek istediğiniz Office uygulamasını gösteren anahtarı bulun. Yol için CLSID anahtarındaki LocalServer32 anahtarını inceleyin.
Bu tabloyu kapaBu tabloyu aç
Office Sunucusu
CLSID anahtarı
Access.Application
{73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}
Excel.Application
{00024500-0000-0000-C000-000000000046}
FrontPage.Application
{04DF1015-7007-11D1-83BC-006097ABE675}
Outlook.Application
{0006F03A-0000-0000-C000-000000000046}
PowerPoint.Application
{91493441-5A91-11CF-8700-00AA0060263B}
Word.Application
{000209FF-0000-0000-C000-000000000046}
Yolun, dosyanın asıl konumuyla eşlendiğinden emin olun.
Not Kısa yol adları doğru olmasalar da doğru gibi görünebilirler. Örneğin, Office ve Microsoft Internet Explorer uygulamalarının (varsayılan konumlarına yüklenmişlerse) kısa yolları C:\PROGRA~1\MICROS~X\ dizinine benzer (burada X bir sayıdır). Bu ad ilk bakışta bir kısa yol adı gibi görünmeyebilir.
Yolun doğru olup olmadığını belirlemek için şu adımları izleyin:
Başlat'ı ve ardından Çalıştır'ı tıklatın.
Kayıt defterindeki değeri 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'ı tıklatın.
Uygulamanın düzgün çalıştığını doğrulayın.
Tamam tıklatıldıktan sonra uygulama çalışırsa, sunucu düzgün kaydettirilmiştir. Tamam tıklatıldıktan sonra uygulama çalışmazsa, LocalServer32 anahtarına doğru yol değerini girerek değiştirin. Yapabiliyorsanız bir kısa yol adı kullanın.
Normal.dot şablonunun veya Excel.xlb kaynak dosyasının bozulmuş olup olmadığını sınayın. Word'deki Normal.dot şablonu veya Excel'deki Excel.xlb kaynak dosyası bozulmuşsa, Microsoft Word veya Microsoft Excel'de otomasyon gerçekleştirmeye çalıştığınızda sorunlar oluşabilir. Bu dosyaları sınamak için, Normal.dot veya Excel.xlb dosyasının tüm örnekleri için yerel sabit sürücülerde arama yapın.
Not Microsoft Windows 2000 veya Microsoft Windows XP çalışan sistemlerde, bu dosyaların birden çok kopyasını bulabilirsiniz. Sistemde yüklü olan her kullanıcı profili için bu dosyaların bir kopyası vardır.
Normal.dot veya Excel.xlb dosyalarını geçici olarak yeniden adlandırın, sonra da otomasyon sınamasını yeniden çalıştırın. Word ve Excel, bu dosyaları bulamazsa yeniden oluşturur. Kodun çalışıp çalışmadığını doğrulayın. Yeni bir Normal.dot dosyası oluşturulduğunda kod çalışırsa, yeniden adlandırdığınız dosyaları silin. Bu dosyalar bozuktur. Kod çalışmazsa, bu dosyalarda kaydedilmiş özel ayarları korumak için dosyaları özgün dosya adlarıyla yeniden adlandırmalısınız.
Sisteminizde Windows 2000 çalışıyorsa, uygulamayı Administrator 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 engelliyorsa, Office sunucuları düzgün yüklenmeyebilir.
Sistemi inceleme
Sistem yapılandırması da işlem dışı COM sunucularının oluşturulmasında sorunlara neden olabilir. Hatanın oluştuğu sistemde sorun gidermek için, aşağıdaki yordamları kullanın:
Sorunun işlem dışı sunuculardan birinde oluşup oluşmadığını belirleyin. Belirli bir COM sunucusunu (Word gibi) kullanan bir uygulamanız varsa, farklı bir işlem dışı sunucuyu sınayarak sorunun COM katmanıyla ilgili olmadığından emin olun. Bilgisayarda bir işlem dışı COM sunucusu oluşturamazsanız, sorunu gidermek üzere bu makalenin "Microsoft Office'i yeniden yükleme" bölümünde açıklanan yöntemle OLE sistem dosyalarını veya işletim sistemini yeniden yükleyin.
Otomasyonu yöneten OLE sistem dosyalarının sürüm numaralarını inceleyin. Bu dosyalar genelde bir küme olarak yüklenir. Dosyaların yapı numaralarıyla eşlenmesi gerekir. Hatalı yapılandırılmış bir kurulum yardımcı programı, dosyaları hatalı olarak ayrı ayrı yükleyebilir. Bu, dosyaların yanlış eşlenmesine neden olur. Otomasyon sorunlarını önlemek için, dosyaları inceleyip dosya yapılarının eşlendiğini doğrulayın.
Otomasyon dosyaları Windows\System32 veya Winnt\System32 dizininde bulunur. Aşağıdaki dosyaları inceleyin.
Bu tabloyu kapaBu tabloyu aç
Dosya adı
Sürüm
Değiştirme tarihi
Asycfilt.dll
3.50.5014
04 Eylül 2002
Oleaut32.dll
3.50.5016
04 Eylül 2002
Olepro32.dll
5.0.5014
04 Eylül 2002
Stdole2.tlb
3.0.5014
04 Eylül 2002
Dosya sürümünü incelemek için, dosyayı Windows Gezgini'nde sağ tıklatın ve sonra da Özellikler'i tıklatın. Dosya sürümünün (yapı numarasının) son dört basamağını ve dosyanın son değiştirilme tarihini not alın. Bu değerlerin tüm otomasyon dosyaları için aynı olduğunu doğrulayın.
Not Daha eski sürüm numaraları ve tarihler, Windows Server 2003 çalışan ve Office 2003'ün yüklü olduğu bir bilgisayardan alınmıştır. Bu sayı ve tarihler örnek olarak kullanılmıştır. Sizin değerleriniz farklı olabilir.
Dosyaların yapı numaraları veya değiştirilme tarihleri aynı değilse, otomasyon dosyalarınızı güncelleştirmek üzere kendiliğinden açılan bir yardımcı program karşıdan yükleyin.
Çalışma zamanı dosyalarına erişme hakkında daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
Visual Basic 6.0 SP4 çalışma zamanı dosyaları Vbrun60sp4.exe ile yüklenir (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir)
Sistem Yapılandırma yardımcı programını (Msconfig.exe) kullanarak, Office uygulamasında kod çalıştırılmasını kısıtlayabilecek üçüncü taraf uygulamalar için hizmetleri ve sistem başlangıcını inceleyin.
Msconfig.exe hakkında daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
Windows XP'de Sistem Yapılandırma yardımcı programını kullanarak nasıl sorun giderilir
Örneğin, "komut dosyası engelleyici" özellikleri olan bir virüsten koruma programı çalıştırdığınız için Outlook Otomasyon uygulamaları başarısız olabilir.
Not Yalnızca ağa bağlı olmayan bir sınama sisteminde virüsten koruma programını geçici olarak devre dışı bırakın.
Alternatif olarak, Outlook'ta aşağıdaki adımları izleyerek üçüncü taraf eklentileri devre dışı bırakın:
Araçlar menüsünde Seçenekler'i tıklatın.
Diğer sekmesinde, Gelişmiş Seçenekler'i tıklatın.
Gelişmiş Seçenekler iletişim kutusunda, Eklenti Yöneticisi'ni tıklatın.
Üçüncü taraf eklentilerin onay kutularını tıklatarak temizleyin.
Outlook'u yeniden başlatın.
Bu yöntem sorunu giderirse, virüsten koruma programına yönelik bir güncelleştirme hakkında daha fazla bilgi almak üzere üçüncü taraf virüsten koruma satıcısına başvurun.
Office'i yeniden yükleme
Yukarıdaki yordamlardan hiçbiri sorunu gidermezse, Office'i kaldırıp yeniden yükleyin. Microsoft, varolan sürümü kaldırdıktan sonra özgün yükleme disklerini kullanarak Office'i yeniden yüklemenizi önerir.
Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın: