Zusammenfassung
Wenn Sie den New-Operator oder die CreateObject-Funktion in Microsoft Visual Basic verwenden, um eine Instance einer Microsoft Office-Anwendung zu erstellen, wird möglicherweise die folgende Fehlermeldung angezeigt:
Hinweis
Laufzeitfehler '429': ActiveX-Komponente kann Objekt nicht erstellen
Dieser Fehler tritt auf, wenn das COM (Component Object Model) das angeforderte Automation-Objekt nicht erstellen kann und das Automation-Objekt daher für Visual Basic nicht verfügbar ist. Dieser Fehler tritt nicht auf allen Computern auf.
In diesem Artikel wird beschrieben, wie Sie häufige Probleme, die diesen Fehler verursachen können, diagnostizieren und beheben.
Weitere Informationen
In Visual Basic gibt es mehrere Ursachen für den Fehler 429. Der Fehler tritt auf, wenn eine der folgenden Bedingungen vorliegt:
- Die Anwendung enthält einen Fehler.
- Es liegt ein Fehler in der Systemkonfiguration vor.
- Eine Komponente fehlt.
- Es ist eine beschädigte Komponente vorhanden.
Um die Ursache des Fehlers zu finden, isolieren Sie das Problem. Wenn die Fehlermeldung "429" auf einem Clientcomputer angezeigt wird, verwenden Sie die folgenden Informationen, um den Fehler in Microsoft Office-Anwendungen zu isolieren und zu beheben.
Hinweis Einige der folgenden Informationen können auch auf Nicht-Office-COM-Server zutreffen. In diesem Artikel wird jedoch vorausgesetzt, dass Sie Office-Anwendungen automatisieren möchten.
Untersuchen Sie den Code
Bevor Sie den Fehler beheben, versuchen Sie, eine einzelne Codezeile zu isolieren, die möglicherweise das Problem verursacht.
Wenn Sie feststellen, dass möglicherweise eine einzelne Codezeile das Problem verursacht, führen Sie die folgenden Schritte aus:
Stellen Sie sicher, dass der Code die explizite Objekterstellung verwendet.
Probleme sind leichter zu erkennen, wenn sie auf eine einzige Aktion eingegrenzt werden. Suchen Sie beispielsweise nach der impliziten Objekterstellung, die wie folgt verwendet wird.
Codebeispiel 1
Application.Documents.Add 'DON'T USE THIS!!Codebeispiel 2
Dim oWordApp As New Word.Application 'DON'T USE THIS!! '... some other code oWordApp.Documents.AddIn beiden Codebeispielen wird die implizite Objekterstellung verwendet. Microsoft Office Word 2003 wird erst gestartet, wenn die Variable mindestens einmal aufgerufen wurde. Da die Variable in verschiedenen Teilen des Programms aufgerufen werden kann, ist das Problem möglicherweise schwer zu lokalisieren. Es kann schwierig sein, zu überprüfen, ob das Problem beim Erstellen des Application-Objekts oder beim Erstellen des Document-Objekts verursacht wird.
Stattdessen können Sie explizite Aufrufe ausführen, um jedes Objekt separat zu erstellen, wie folgt.
Dim oWordApp As Word.Application Dim oDoc As Word.Document Set oWordApp = CreateObject("Word.Application") '... some other code Set oDoc = oWordApp.Documents.AddWenn Sie explizite Aufrufe vornehmen, um jedes Objekt separat zu erstellen, ist das Problem leichter zu isolieren. Dadurch kann der Code auch leichter lesbar sein.
Verwenden Sie die CreateObject-Funktion anstelle des New-Operators, wenn Sie eine Instance einer Office-Anwendung erstellen.
Die CreateObject-Funktion bildet den Erstellungsprozess, den die meisten Microsoft Microsoft Visual C++-Clients verwenden, genau ab. Die Funktion CreateObject erlaubt auch Änderungen in der CLSID des Servers zwischen Versionen. Sie können die Funktion CreateObject sowohl mit früh gebundenen Objekten als auch mit spät gebundenen Objekten verwenden.
Vergewissern Sie sich, dass die Zeichenfolge "ProgID", die an
CreateObject korrekt ist, und überprüfen Sie dann, ob die Zeichenfolge "ProgID" versionsunabhängig ist. Verwenden Sie z. B. die Zeichenfolge "Excel.Application" anstelle der Zeichenfolge "Excel.Application.8". Das System, das fehlschlägt, verfügt möglicherweise über eine ältere Version von Microsoft Office oder eine neuere Version von Microsoft Office als die Version, die Sie in der Zeichenfolge "ProgID" angegeben haben.Verwenden Sie den Befehl "Erl ", um die Zeilennummer der Codezeile zu melden, die nicht erfolgreich ist. Dies kann Ihnen beim Debuggen von Anwendungen helfen, die nicht in der IDE ausgeführt werden können. Der folgende Code gibt an, welches Automatisierungsobjekt nicht erstellt werden kann (Microsoft Word oder 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, vbCriticalVerwenden Sie die Meldungsfeld-Funktion und die Zeilennummer, um den Fehler zu verfolgen.
Verwenden Sie die späte Bindung wie folgt:
Dim oWordApp As ObjectFrüher gebundene Objekte erfordern, dass ihre benutzerdefinierten Schnittstellen über Prozessgrenzen hinweg gemarshallt werden. Wenn die benutzerdefinierte Schnittstelle während CreateObject oder während New nicht gemarshallt werden kann, wird die Fehlermeldung "429" angezeigt. Ein spät gebundenes Objekt verwendet die systemdefinierte Schnittstelle IDispatch, die kein benutzerdefiniertes Proxy erfordert. Verwenden Sie ein spät gebundenes Objekt, um zu überprüfen, ob dieses Verfahren ordnungsgemäß funktioniert.
Wenn das Problem nur auftritt, wenn das Objekt frühzeitig gebunden ist, liegt das Problem in der Serveranwendung. In der Regel können Sie die Anwendung neu installieren, wie im Abschnitt "Untersuchen des Automatisierungsservers" dieses Artikels beschrieben, um das Problem zu beheben.
Untersuchen des Automatisierungsservers
Der häufigste Grund für einen Fehler bei Verwendung von CreateObject oder New ist ein Problem, das die Serveranwendung betrifft. In der Regel wird das Problem durch die Konfiguration der Anwendung oder das Setup der Anwendung verursacht. Verwenden Sie zur Problembehandlung die folgenden Methoden:
Stellen Sie sicher, dass die zu automatisierende Office-Anwendung auf dem lokalen Computer installiert ist. Stellen Sie sicher, dass Sie die Anwendung ausführen können. Klicken Sie hierzu auf "Start", klicken Sie auf "Start"
Führen Sie die Anwendung aus, und versuchen Sie dann, sie auszuführen. Wenn Sie die Anwendung nicht manuell ausführen können, funktioniert die Anwendung nicht durch Automatisierung.Registrieren Sie die Anwendung wie folgt erneut:
Klicken Sie auf Start, und klicken Sie dann auf Ausführen.
Geben Sie im Dialogfeld "Ausführen " den Pfad des Servers ein, und fügen Sie dann "/RegServer " an das Ende der Zeile an.
Klicken Sie auf OK.
Die Anwendung wird im Hintergrund ausgeführt. Die Anwendung wird erneut als COM-Server registriert.
Wenn das Problem auftritt, weil ein Registrierungsschlüssel fehlt, können Sie das Problem in der Regel mit diesen Schritten beheben.
Überprüfen Sie den Schlüssel "LocalServer32" unter der CLSID für die Anwendung, die Sie automatisieren möchten. Stellen Sie sicher, dass der Schlüssel LocalServer32 auf den richtigen Speicherort für die Anwendung verweist. Stellen Sie sicher, dass der Pfadname in einem kurzen Pfadformat (DOS 8.3) vorliegt. Sie müssen einen Server nicht mit einem kurzen Pfadnamen registrieren. Lange Pfadnamen, die eingebettete Bereiche enthalten, können jedoch auf einigen Systemen Probleme verursachen.
Um den für den Server gespeicherten Pfadschlüssel zu überprüfen, starten Sie den Windows-Registrierungs-Editor wie folgt:
Klicken Sie auf Start, und klicken Sie dann auf Ausführen.
Geben Sie regedit ein, und klicken Sie dann auf OK.
Wechseln Sie zur Taste HKEY_CLASSES_ROOT\CLSID.
Die CLSIDs für die registrierten Automatisierungsserver auf dem System befinden sich unter diesem Schlüssel.
Verwenden Sie die folgenden Werte des CLSID-Schlüssels, um den Schlüssel zu finden, der die Office-Anwendung darstellt, die Sie automatisieren möchten. Überprüfen Sie den Schlüssel "LocalServer32" des CLSID-Schlüssels für den Pfad.
Office-Server CLSID-Schlüssel Access.Application {73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9} Excel.Application {00024500-0000-0000-C000-0000000000046} Outlook.Application {0006F03A-0000-0000-C000-0000000000046} PowerPoint.Application {91493441-5A91-11CF-8700-00AA0060263B} Word. Anwendung {000209FF-0000-0000-C000-000000000046} Überprüfen Sie den Pfad, um sicherzustellen, dass er mit dem tatsächlichen Speicherort der Datei übereinstimmt.
Hinweis Kurze Pfadnamen scheinen korrekt zu sein, wenn sie nicht korrekt sind. Beispielsweise verfügen sowohl Office als auch Microsoft Internet Explorer (sofern sie an ihren Standardspeicherorten installiert sind) über einen kurzen Pfad, der ähnlich C:\PROGRA~1\MICROS~X\ ähnelt (wobei
X eine Zahl ist). Dieser Name scheint auf den ersten Blick kein Kurzpfadname zu sein.Gehen Sie folgendermaßen vor, um festzustellen, ob der Pfad korrekt ist:
Klicken Sie auf Start, und klicken Sie dann auf Ausführen.
Kopieren Sie den Wert aus der Registrierung, und fügen Sie ihn in das Dialogfeld "Ausführen " ein.
Hinweis Entfernen Sie den Schalter /automation, bevor Sie die Anwendung ausführen.
Klicken Sie auf OK.
Stellen Sie sicher, dass die Anwendung ordnungsgemäß ausgeführt wird.
Wenn die Anwendung ausgeführt wird, nachdem Sie auf "OK" geklickt haben, ist der Server ordnungsgemäß registriert. Wenn die Anwendung nicht ausgeführt wird, nachdem Sie auf OK geklickt haben, ersetzen Sie den Wert des Schlüssels LocalServer32 durch den richtigen Pfad. Verwenden Sie, wenn möglich, einen kurzen Pfadnamen.
Testen Sie, ob die Vorlage "Normal.dot" oder die Ressourcendatei "Excel.xlb" möglicherweise beschädigt ist. Beim Automatisieren von Microsoft Word oder Microsoft Excel können Probleme auftreten, wenn entweder die Vorlage "Normal.dot" in Word oder die Ressourcendatei "Excel.xlb" in Excel beschädigt ist. Um diese Dateien zu testen, suchen Sie auf den lokalen Festplatten nach allen Instanzen von "Normal.dot" oder "Excel.xlb".
Hinweis Möglicherweise finden Sie mehrere Kopien dieser Dateien. Es gibt eine Kopie dieser Dateien für jedes auf dem System installierte Benutzerprofil.
Benennen Sie die Dateien "Normal.dot" oder "Excel.xlb" vorübergehend um, und führen Sie dann den Automatisierungstest erneut aus. Sowohl Word als auch Excel erstellen diese Dateien, wenn sie nicht gefunden werden können. Vergewissern Sie sich, dass der Code funktioniert. Wenn der Code funktioniert, wenn eine neue Datei "Normal.dot" erstellt wird, löschen Sie die Dateien, die Sie umbenannt haben. Diese Dateien sind beschädigt. Wenn der Code nicht funktioniert, müssen Sie diese Dateien auf ihre ursprünglichen Dateinamen rückgängig machen, um alle benutzerdefinierten Einstellungen zu speichern, die in diesen Dateien gespeichert sind.
Führen Sie die Anwendung unter dem Administratorkonto aus. Office-Server benötigen Lese-/Schreibzugriff auf die Registrierung und das Laufwerk. Office-Server werden möglicherweise nicht ordnungsgemäß geladen, wenn Ihre aktuellen Sicherheitseinstellungen Lese-/Schreibzugriff verweigern.
Untersuchen des Systems
Die Systemkonfiguration kann auch Probleme bei der Erstellung von Out-of-Process-COM-Servern verursachen. Verwenden Sie zur Fehlerbehebung die folgenden Methoden auf dem System, auf dem der Fehler auftritt:
Stellen Sie fest, ob das Problem bei einem Out-of-Process-Server auftritt. Wenn eine Anwendung einen bestimmten COM-Server verwendet (z. B. Word), testen Sie einen anderen Out-of-Process-Server, um sicherzustellen, dass das Problem nicht in der COM-Ebene selbst auftritt. Wenn Sie auf dem Computer keinen Out-of-Process-COM-Server erstellen können, installieren Sie die OLE-Systemdateien erneut, wie im Abschnitt "Neuinstallieren von Microsoft Office" dieses Artikels beschrieben, oder installieren Sie das Betriebssystem neu, um das Problem zu beheben.
Überprüfen Sie die Versionsnummern für die OLE-Systemdateien, mit denen die Automatisierung verwaltet wird. Diese Dateien werden in der Regel als Set installiert. Diese Dateien müssen mit Buildnummern übereinstimmen. Ein falsch konfiguriertes Setupprogramm installiert die Dateien möglicherweise separat. Dies führt dazu, dass die Dateien nicht übereinstimmen. Um Probleme bei der Automatisierung zu vermeiden, überprüfen Sie die Dateien, um sicherzustellen, dass die Dateibuilds übereinstimmen.
Die Automatisierungsdateien befinden sich im Verzeichnis Windows\System32. Überprüfen Sie die folgenden Dateien.
Dateiname Version Geändert am Asycfilt.dll 10.0.16299.15 Montag, 29. September 2017 Ole32.dll 10.0.16299.371 29. März 2018 Oleaut32.dll 10.0.16299.431 3. Mai 2018 Olepro32.dll 10.0.16299.15 Montag, 29. September 2017 Stdole2.tlb 3.0.5014 Montag, 29. September 2017 Um die Dateiversion zu überprüfen, klicken Sie im Windows Explorer mit der rechten Maustaste auf die Datei, und klicken Sie dann auf Eigenschaften. Notieren Sie die letzten vier Ziffern der Dateiversion (Build-Nummer) und das Datum, an dem die Datei zuletzt geändert wurde. Stellen Sie sicher, dass diese Werte für alle Automatisierungsdateien identisch sind.
Hinweis Die folgenden Dateien sind für Windows 10 Version 1709, Build 16299.431. Diese Zahlen und Datumsangaben dienen nur Beispielen. Ihre Werte können unterschiedlich sein.
Verwenden Sie das Dienstprogramm Systemkonfiguration (Msconfig.exe, um die Dienste und den Systemstart für Anwendungen von Drittanbietern zu untersuchen, die möglicherweise die Ausführung von Code in der Office-Anwendung einschränken
Hinweis Deaktivieren Sie das Antivirenprogramm nur vorübergehend auf einem Testsystem, das nicht mit dem Netzwerk verbunden ist.
Alternativ können Sie in Outlook die folgenden Schritte ausführen, um Add-Ins von Drittanbietern zu deaktivieren:
Wenn das Problem mit dieser Methode behoben wird, wenden Sie sich an den Drittanbieter für Antivirensoftware, um weitere Informationen zu einem Update des Antivirenprogramms zu erhalten.
Klicken Sie im Menü "Datei " auf "Optionen" und dann auf "Add-Ins".
Klicken Sie auf "COM-Add-Ins verwalten" und dann auf "Gehe zu".
Hinweis Das Dialogfeld "COM-Add-Ins" wird geöffnet.
Deaktivieren Sie das Kontrollkästchen für alle Add-Ins von Drittanbietern, und klicken Sie dann auf OK.
Starten Sie Outlook erneut.
Neuinstallation von Office
Wenn das Problem durch keines der vorherigen Verfahren behoben wird, entfernen Sie Office, und installieren Sie es erneut.
Weitere Informationen finden Sie im folgenden Office-Artikel:
Referenzmaterial
Weitere Informationen zur Office-Automatisierung und Codebeispiele finden Sie auf der folgenden Microsoft-Website: