Zusammenfassung
Wenn Sie den New-Operator oder die CreateObject-Funktion in Microsoft Visual Basic verwenden, um eine Instanz einer Microsoft Office-Anwendung zu erstellen, wird möglicherweise die folgende Fehlermeldung angezeigt:
Laufzeitfehler '429': ActiveX-Komponente kann kein Objekt erstellen
Dieser Fehler tritt auf, wenn das Component Object Model (COM) 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 diagnostizieren und beheben, die diesen Fehler verursachen können.
Weitere Informationen
In Visual Basic gibt es mehrere Ursachen für Fehler 429. Der Fehler tritt auf, wenn eine der folgenden Bedingungen zutrifft:
-
Es liegt ein Fehler in der Anwendung vor.
-
Es liegt ein Fehler in der Systemkonfiguration vor.
-
Es fehlt eine Komponente.
-
Es ist eine beschädigte Komponente vorhanden.
Um die Ursache des Fehlers zu ermitteln, isolieren Sie das Problem. Wenn Sie die Fehlermeldung "429" auf einem Clientcomputer erhalten, verwenden Sie die folgenden Informationen, um den Fehler in Microsoft Office-Anwendungen zu isolieren und zu beheben.
Hinweis Einige der folgenden Informationen gelten möglicherweise auch für Nicht-Office-COM-Server. In diesem Artikel wird jedoch davon ausgegangen, dass Sie Office-Anwendungen automatisieren möchten.
Untersuchen des Codes
Bevor Sie den Fehler beheben, versuchen Sie, eine einzelne Codezeile zu isolieren, die das Problem verursachen kann.
Wenn Sie feststellen, dass das Problem möglicherweise durch eine einzelne Codezeile verursacht wird, führen Sie die folgenden Verfahren aus:
-
Stellen Sie sicher, dass der Code explizite Objekterstellung verwendet.
Probleme lassen sich leichter identifizieren, wenn sie auf eine einzelne Aktion beschränkt sind. Suchen Sie beispielsweise nach der impliziten Objekterstellung, die als eine der folgenden Verwendet wird.
Codebeispiel 1Application.Documents.Add 'DON'T USE THIS!!
Codebeispiel 2
Dim oWordApp As New Word.Application 'DON'T USE THIS!! '... some other code oWordApp.Documents.Add
Beide Codebeispiele verwenden die implizite Objekterstellung. Microsoft Office Word 2003 wird erst gestartet, wenn die Variable mindestens einmal aufgerufen wird. Da die Variable in verschiedenen Teilen des Programms aufgerufen werden kann, ist das Problem möglicherweise schwer zu finden. 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 wie folgt separat zu erstellen.Dim oWordApp As Word.Application Dim oDoc As Word.Document Set oWordApp = CreateObject("Word.Application") '... some other code Set oDoc = oWordApp.Documents.Add
Wenn Sie explizite Aufrufe ausführen, um jedes Objekt separat zu erstellen, ist das Problem leichter zu isolieren. Dies kann auch die Lesbarkeit des Codes erleichtern.
-
Verwenden Sie die CreateObject-Funktion anstelle des New-Operators, wenn Sie eine Instanz einer Office-Anwendung erstellen.
Die CreateObject-Funktion ordnet den Erstellungsprozess, den die meisten Microsoft Visual C++ Clients verwenden, genau zu. Die CreateObject-Funktion lässt auch Änderungen an der CLSID des Servers zwischen Versionen zu. Sie können die CreateObject-Funktion mit früh gebundenen Objekten und spät gebundenen Objekten verwenden. -
Überprüfen Sie, ob die an
CreateObject übergebene "ProgID"-Zeichenfolge korrekt ist, und überprüfen Sie dann, ob die Zeichenfolge "ProgID" versionsunabhängig ist. Verwenden Sie beispielsweise die Zeichenfolge "Excel.Application" anstelle der Zeichenfolge "Excel.Application.8". Das System, bei dem ein Fehler auftritt, 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 Erl-Befehl , 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 teilt Ihnen mit, welches Automation-Objekt 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, vbCritical
Verwenden Sie die MsgBox-Funktion und die Zeilennummer, um den Fehler nachzuverfolgen.
-
Verwenden Sie die späte Bindung wie folgt:
Dim oWordApp As Object
Früh gebundene Objekte erfordern, dass ihre benutzerdefinierten Schnittstellen über Prozessgrenzen hinweg gemarshallt werden. Wenn die benutzerdefinierte Schnittstelle während CreateObject oder New nicht gemarshallt werden kann, erhalten Sie die Fehlermeldung "429". Ein spät gebundenes Objekt verwendet die systemdefinierte IDispatch-Schnittstelle, für die kein benutzerdefinierter Proxy gemarshallt werden muss. Verwenden Sie ein spät gebundenes Objekt, um zu überprüfen, ob diese Prozedur ordnungsgemäß funktioniert.
Wenn das Problem nur auftritt, wenn das Objekt früh gebunden ist, liegt das Problem in der Serveranwendung. In der Regel können Sie die Anwendung wie im Abschnitt "Untersuchen des Automatisierungsservers" dieses Artikels beschrieben neu installieren, um das Problem zu beheben.
Untersuchen des Automatisierungsservers
Der häufigste Grund für einen Fehler, wenn Sie CreateObject oder New verwenden, ist ein Problem, das sich auf die Serveranwendung auswirkt. In der Regel verursacht die Konfiguration der Anwendung oder die Einrichtung der Anwendung das Problem. Verwenden Sie für die Problembehandlung die folgenden Methoden:
-
Vergewissern Sie sich, dass die Office-Anwendung, die Sie automatisieren möchten, 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
Ausführen, und versuchen Sie dann, die Anwendung auszuführen. Wenn Sie die Anwendung nicht manuell ausführen können, funktioniert die Anwendung nicht über die Automatisierung. -
Registrieren Sie die Anwendung wie folgt erneut:
-
Klicken Sie auf Start und 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 als COM-Server erneut registriert.
Wenn das Problem auftritt, weil ein Registrierungsschlüssel fehlt, beheben diese Schritte in der Regel das Problem.
-
-
Untersuchen Sie den LocalServer32-Schlüssel unter der CLSID für die Anwendung, die Sie automatisieren möchten. Stellen Sie sicher, dass der LocalServer32-Schlüssel auf den richtigen Speicherort für die Anwendung verweist. Stellen Sie sicher, dass der Pfadname ein kurzes Pfadformat (DOS 8.3) aufweist. Sie müssen einen Server nicht mit einem kurzen Pfadnamen registrieren. Lange Pfadnamen, die eingebettete Leerzeichen enthalten, können jedoch probleme auf einigen Systemen verursachen.
Um den Pfadschlüssel zu untersuchen, der für den Server gespeichert ist, starten Sie den Windows-Registrierungs-Editor wie folgt:-
Klicken Sie auf Start und dann auf Ausführen.
-
Geben Sie regedit ein, und klicken Sie dann auf OK.
-
Wechseln Sie zur HKEY_CLASSES_ROOT\CLSID-Taste.
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. Untersuchen Sie den LocalServer32-Schlüssel 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-000000000046}
Outlook.Application
{0006F03A-0000-0000-C000-00000000046}
PowerPoint.Application
{91493441-5A91-11CF-8700-00AA0060263B}
Word.Application
{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 möglicherweise richtig zu sein, wenn sie nicht korrekt sind. Beispielsweise haben sowohl Office als auch Microsoft Internet Explorer (wenn sie an ihren Standardspeicherorten installiert sind) einen kurzen Pfad, der C:\PROGRA~1\MICROS~X\ ähnelt (wobei
X eine Zahl ist). Dieser Name scheint anfangs möglicherweise kein kurzer Pfadname zu sein.
Führen Sie die folgenden Schritte aus, um zu ermitteln, ob der Pfad korrekt ist:-
Klicken Sie auf Start und 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.
-
Überprüfen Sie, ob die Anwendung ordnungsgemäß ausgeführt wird.
Wenn die Anwendung ausgeführt wird, nachdem Sie auf OK geklickt haben, wird der Server ordnungsgemäß registriert. Wenn die Anwendung nicht ausgeführt wird, nachdem Sie auf OK geklickt haben, ersetzen Sie den Wert des LocalServer32-Schlüssels durch den richtigen Pfad. Verwenden Sie nach Möglichkeit einen kurzen Pfadnamen.
-
-
Testen Sie die mögliche Beschädigung der Vorlage Normal.dot oder der Excel.xlb-Ressourcendatei. Probleme können auftreten, wenn Sie Microsoft Word oder Microsoft Excel automatisieren, wenn entweder die Vorlage Normal.dot in Word oder die Excel.xlb-Ressourcendatei in Excel beschädigt ist. Um diese Dateien zu testen, durchsuchen Sie die lokalen Festplatten nach allen Instanzen von Normal.dot oder Excel.xlb.
Hinweis Möglicherweise finden Sie mehrere Kopien dieser Dateien. Es gibt eine Kopie jeder dieser Dateien für jedes Benutzerprofil, das auf dem System installiert ist.
Benennen Sie die Dateien Normal.dot oder Excel.xlb vorübergehend um, und führen Sie dann den Automatisierungstest erneut aus. Word und Excel erstellen diese Dateien, wenn sie nicht gefunden werden. Überprüfen Sie, ob der Code funktioniert. Wenn der Code beim Erstellen einer neuen Datei "Normal.dot" funktioniert, 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 zurücksetzen, 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 auf das Laufwerk. Office-Server werden möglicherweise nicht ordnungsgemäß geladen, wenn Ihre aktuellen Sicherheitseinstellungen den Lese-/Schreibzugriff verweigern.
Untersuchen des Systems
Die Systemkonfiguration kann auch Probleme bei der Erstellung von OUT-of-Process-COM-Servern verursachen. Verwenden Sie für die Problembehandlung die folgenden Methoden auf dem System, auf dem der Fehler auftritt:
-
Ermitteln Sie, ob das Problem bei einem Out-of-Process-Server auftritt. Wenn Sie über eine Anwendung verfügen, die einen bestimmten COM-Server (z. B. Word) verwendet, testen Sie einen anderen Out-of-Process-Server, um sicherzustellen, dass das Problem nicht auf der COM-Ebene selbst auftritt. Wenn Sie auf dem Computer keinen OUT-of-Process-COM-Server erstellen können, installieren Sie die OLE-Systemdateien wie im Abschnitt "Erneutes Installieren von Microsoft Office" dieses Artikels beschrieben neu, oder installieren Sie das Betriebssystem neu, um das Problem zu beheben.
-
Überprüfen Sie die Versionsnummern für die OLE-Systemdateien, die die Automatisierung verwalten. Diese Dateien werden in der Regel als Gruppe installiert. Diese Dateien müssen mit den Buildnummern übereinstimmen. Ein falsch konfiguriertes Setup-Hilfsprogramm kann die Dateien fälschlicherweise separat installieren. 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. Untersuchen Sie die folgenden Dateien.File name
Version
Änderungsdatum
Asycfilt.dll
10.0.16299.15
29. September 2017
Ole32.dll
10.0.16299.371
März 29, 2018
Oleaut32.dll
10.0.16299.431
3. Mai 2018
Olepro32.dll
10.0.16299.15
29. September 2017
Stdole2.tlb
3.0.5014
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 sich die letzten vier Ziffern der Dateiversion (die Buildnummer) 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 gelten für Windows 10 Version 1709, Build 16299.431. Diese Zahlen und Datumsangaben sind nur Beispiele. Ihre Werte können unterschiedlich sein. -
Verwenden Sie das Hilfsprogramm Systemkonfiguration (Msconfig.exe), um die Dienste und den Systemstart für Drittanbieteranwendungen 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.
Führen Sie alternativ die folgenden Schritte in Outlook aus, 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 klicken Sie dann auf Los.
Hinweis Das Dialogfeld COM-Add-Ins wird geöffnet. -
Deaktivieren Sie das Kontrollkästchen für alle Drittanbieter-Add-Ins, und klicken Sie dann auf OK.
-
Starten Sie Outlook neu.
-
Erneutes Installieren von Office
Wenn das Problem durch keines der vorherigen Verfahren behoben wird, entfernen Sie Office, und installieren Sie es dann erneut.
Weitere Informationen finden Sie im folgenden Office-Artikel:
Informationsquellen
Weitere Informationen zu Office-Automatisierung und Codebeispielen finden Sie auf der folgenden Microsoft-Website: