Sie erhalten Laufzeitfehler 429, wenn Sie Office-Anwendungen automatisieren

Gilt für: Office 2016Office 2013

Zusammenfassung


Wenn Sie den New -Operator oder die CreateObject -Funktion in Microsoft Visual Basic zum Erstellen einer Instanz einer Microsoft Office-Anwendung verwenden, wird möglicherweise die folgende Fehlermeldung angezeigt:
Laufzeitfehler "429": ActiveX-Komponente kann kein Objekt erstellen
Dieser Fehler tritt auf, wenn das Komponentenobjektmodell (com) das angeforderte Automatisierungs Objekt nicht erstellen kann und das Automatisierungs 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 können, 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: 
  • In der Anwendung ist ein Fehler aufgetreten.
  • In der Systemkonfiguration ist ein Fehler aufgetreten.
  • Es ist eine fehlende Komponente vorhanden.
  • Es ist eine beschädigte Komponente vorhanden.
Um die Ursache des Fehlers zu ermitteln, 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 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 möglicherweise das Problem verursacht.Wenn Sie feststellen, dass das Problem möglicherweise durch eine einzelne Codezeile verursacht wird, führen Sie die folgenden Schritte aus: 
  • Stellen Sie sicher, dass der Code explizite Objekterstellung verwendet. Probleme sind leichter zu erkennen, wenn Sie auf eine einzelne Aktion beschränkt sind. Suchen Sie beispielsweise nach der impliziten Objekterstellung, die als eine der folgenden verwendet wird. Code Beispiel 1
    Application.Documents.Add 'DON'T USE THIS!!
    Code Beispiel 2
    Dim oWordApp As New Word.Application 'DON'T USE THIS!!'... some other codeoWordApp.Documents.Add
    In beiden Codebeispielen wird die implizite Objekterstellung verwendet. 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 schwierig zu finden. Es ist möglicherweise schwierig, zu überprüfen, ob das Problem beim Erstellen des Anwendungs Objekts oder beim Erstellen des Dokument Objekts verursacht wurde. Stattdessen können Sie explizite Aufrufe durchführen, um jedes Objekt wie folgt separat zu erstellen.
    Dim oWordApp As Word.ApplicationDim oDoc As Word.DocumentSet oWordApp = CreateObject("Word.Application")'... some other codeSet oDoc = oWordApp.Documents.Add
    Wenn Sie explizite Aufrufe durchführen, um jedes Objekt separat zu erstellen, ist das Problem einfacher zu isolieren. Dies kann auch dazu führen, dass der Code leichter lesbar ist.
  • 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, eng zu. Die CreateObject-Funktion ermöglicht auch Änderungen an der CLSID des Servers zwischen Versionen. Sie können die CreateObject-Funktion mit früh gebundenen Objekten und mit spät gebundenen Objekten verwenden.
  • Überprüfen Sie, ob die "ProgID"-Zeichenfolge, die an CreateObject ist richtig, und überprüfen Sie dann, ob die Zeichenfolge "ProgID" versionsunabhängig ist. Verwenden Sie beispielsweise die "Excel. Application"-Zeichenfolge, anstatt die "Excel. Application. 8"-Zeichenfolge zu verwenden. Das System, das fehlschlägt, hat möglicherweise 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 zeigt Ihnen, welches Automatisierungs 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 Funktion MsgBox und die Nummer der Zeile, um den Fehler zu überwachen.
  • Verwenden Sie die späte Bindung wie folgt:
    Dim oWordApp As Object
    Für früh gebundene Objekte müssen Ihre benutzerdefinierten Schnittstellen über Prozessgrenzen hinweg gemarshallt werden. Wenn die benutzerdefinierte Schnittstelle nicht während der CreateObject -oder während der Neuentwicklunggemarshallt werden kann, wird die Fehlermeldung "429" angezeigt. 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 erneut installieren, wie im Abschnitt "Überprüfen des Automatisierungsservers" in diesem Artikel beschrieben, um das Problem zu beheben.

Untersuchen des Automatisierungsservers

Der häufigste Grund für einen Fehler, der bei Verwendung von CreateObject oder New auftritt, ist ein Problem, das sich auf die Serveranwendung auswirkt. In der Regel führt die Konfiguration der Anwendung oder das Setup der Anwendung zu dem Problem. Zur Problembehandlung verwenden Sie die folgenden Methoden:

  • Überprüfen Sie, ob 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 dazu auf Start, klicken Sie auf FührenSie die Anwendung aus, 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 erneut wie folgt:  
    1. Klicken Sie auf Start und anschließend auf Ausführen.
    2. Geben Sie im Dialogfeld Ausführen den Pfad des Servers ein, und fügen Sie /RegServer an das Ende der Zeile an.
    3. 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 nicht vorhanden ist, wird das Problem in der Regel durch diese Schritte behoben.
  • Überprüfen 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 zeigt. Stellen Sie sicher, dass sich der Pfadname im Format "Short Path (DOS 8,3)" befindet. Sie müssen keinen Server mithilfe eines kurzen Pfadnamens registrieren. Lange Pfadnamen, die eingebettete Leerzeichen enthalten, können jedoch auf einigen Systemen zu Problemen führen. Um den für den Server gespeicherten Pfadschlüssel zu untersuchen, starten Sie den Windows-Registrierungs-Editor wie folgt:  
    1. Klicken Sie auf Start und anschließend auf Ausführen.
    2. Geben Sie Regeditein, und klicken Sie dann auf OK.
    3. Wechseln Sie zum HKEY_CLASSES_ROOT \CLSID-Schlüssel. Die CLSIDs für die registrierten Automatisierungsserver auf dem System sind unter diesem Schlüssel zu finden.
    4. 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 LocalServer32-Schlüssel des CLSID-Schlüssels für den Pfad.  
      Office Server CLSID-Taste
      Access.Application {73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}
      Excel.Application {00024500-0000-0000-C000-000000000046}
      Outlook.Application {0006F03A-0000-0000-C000-000000000046}
      PowerPoint.Application {91493441-5A91-11CF-8700-00AA0060263B}
      Word.Application {000209FF-0000-0000-C000-000000000046}
    5. Überprüfen Sie den Pfad, um sicherzustellen, dass er mit dem tatsächlichen Speicherort der Datei übereinstimmt.
    Hinweis Kurze Pfadnamen können richtig erscheinen, wenn Sie nicht korrekt sind. Sowohl Office als auch Microsoft Internet Explorer (wenn Sie in ihren Standardspeicherorten installiert sind) haben beispielsweise einen kurzen Pfad, der C:\PROGRA ~ 1 \ Micros ~Xentspricht (wobei X ist eine Zahl). Dieser Name scheint zunächst nicht ein kurzer Pfadname zu sein. Führen Sie die folgenden Schritte aus, um zu ermitteln, ob der Pfad korrekt ist:  
    1. Klicken Sie auf Start und anschließend auf Ausführen.
    2. Kopieren Sie den Wert aus der Registrierung, und fügen Sie dann den Wert im Dialogfeld Ausführen ein. Hinweis Entfernen Sie den /Automation -Schalter, bevor Sie die Anwendung ausführen.
    3. Klicken Sie auf OK.
    4. Überprüfen Sie, ob die Anwendung ordnungsgemäß ausgeführt wird. Wenn die Anwendung ausgeführt wird, nachdem Sie auf OKgeklickt haben, wird der Server ordnungsgemäß registriert. Wenn die Anwendung nicht ausgeführt wird, nachdem Sie auf OKgeklickt haben, ersetzen Sie den Wert des LocalServer32-Schlüssels durch den richtigen Pfad. Verwenden Sie einen kurzen Pfadnamen, falls möglich.
  • 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, suchen Sie die lokalen Festplatten nach allen Instanzen von "normal. dot" oder "Excel. xlb". Hinweis Sie können mehrere Kopien dieser Dateien finden. Für jedes Benutzerprofil, das auf dem System installiert ist, gibt es eine Kopie jeder dieser Dateien. Benennen Sie die Datei "normal. dot" oder die Excel. xlb-Dateien vorübergehend um, und führen Sie dann den Automatisierungs Test erneut aus. Beide Dateien werden von Word und Excel erstellt, wenn Sie nicht gefunden werden können. Überprüfen Sie, ob 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 in ihren ursprünglichen Dateinamen zurücksetzen, um benutzerdefinierte Einstellungen zu speichern, die in diesen Dateien gespeichert sind.
  • Führen Sie die Anwendung unter dem Administrator Konto 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 Lese-/Schreibzugriff verweigern.

Überprüfen des Systems

Die System Konfiguration kann auch Probleme bei der Erstellung von Out-of-Process-COM-Servern verursachen. Verwenden Sie zur 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 (wie Word) verwendet, testen Sie einen anderen Out-of-Process-Server, um sicherzustellen, dass das Problem nicht auf der com-Ebene selbst auftritt. Wenn Sie keinen out-of-Process-COM-Server auf dem Computer erstellen können, installieren Sie die OLE-Systemdateien neu, wie im Abschnitt "Neuinstallation von Microsoft Office" in diesem Artikel beschrieben, oder installieren Sie das Betriebssystem erneut, um das Problem zu beheben.
  • Untersuchen Sie die Versionsnummern für die OLE-Systemdateien, die die Automatisierung verwalten. Diese Dateien werden in der Regel als "Satz" installiert. Diese Dateien müssen den Build-Nummern entsprechen. Ein falsch konfiguriertes Setup-Dienstprogramm kann die Dateien irrtümlich separat installieren. Dies bewirkt, dass die Dateien nicht übereinstimmen. Untersuchen Sie die Dateien, um sicherzustellen, dass die Datei-Builds übereinstimmen, um Probleme bei der Automatisierung zu vermeiden. Die Automatisierungsdateien befinden sich im Windows\System32-Verzeichnis. Überprüfen Sie die folgenden Dateien.  
    Dateiname Version Änderungsdatum
    Asycfilt.dll 10.0.16299.15 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 29. September 2017
    Stdole2.tlb 3.0.5014 29. September 2017
    Um die Dateiversion zu überprüfen, klicken Sie in 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 sind 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 Systemkonfigurations Dienstprogramm (msconfig. exe), um die Dienste und den Systemstart für Anwendungen von Drittanbietern zu untersuchen, die möglicherweise den laufenden Code in der Office-Anwendung einschränken. Weitere Informationen zu msconfig. exe finden Sie im folgenden Microsoft Knowledge Base-Artikel:
    181966 Erweiterte Problembehandlungseinstellungen für das Systemkonfigurations Dienstprogramm
    Beispielsweise können Outlook-Automatisierungsanwendungen fehlschlagen, weil Sie ein Antivirenprogramm ausführen, das über die Features "Skript Blocker" verfügt. 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 durch diese Methode behoben wird, wenden Sie sich an den Hersteller des Drittanbieter-Antivirenprogramms, um weitere Informationen zu einem Update für das Antivirenprogramm zu erhalten.  
    1. Klicken Sie im Menü Datei auf Optionen, und klicken Sie dann auf Add-ins.
    2. Klicken Sie auf com-Add-Ins verwalten, und klicken Sie dann auf Gehezu. Hinweis Das Dialogfeld com-Add-ins wird geöffnet.
    3. Deaktivieren Sie das Kontrollkästchen für ein Drittanbieter-Add-in, und klicken Sie dann auf OK.
    4. Starten Sie Outlook neu.

Erneutes Installieren von Office

Wenn das Problem durch keines der vorhergehenden Verfahren behoben wird, entfernen Sie Office, und installieren Sie es erneut.

Weitere Informationen finden Sie im folgenden Office- Artikel:

Informationsquellen


Weitere Informationen zu Office-Automatisierung und Codebeispielen finden Sie auf der folgenden Microsoft-Website: