INFO: Problembehandlung von Fehler 429 bei Automatisierung von Office-Anwendungen

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 244264 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
244264 INFO: Troubleshooting Error 429 When Automating Office Applications
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Wenn Sie in Microsoft Visual Basic den Operator New oder die Funktion CreateObject verwenden, um eine Instanz einer Microsoft Office-Anwendung zu erstellen, wird möglicherweise die folgende Fehlermeldung angezeigt:
Laufzeitfehler '429': Objekterstellung durch ActiveX-Komponente nicht möglich
Dieser Fehler tritt auf, wenn das angeforderte Automatisierungsobjekt von COM nicht erstellt werden konnte und deshalb für Visual Basic nicht verfügbar ist. Der Fehler tritt typischerweise auf bestimmten Computern auf, auf anderen dagegen nicht.

Dieser Artikel stellt einige Tipps zur Problembehandlung bereit, die Ihnen bei der Diagnose und Behebung häufig auftretender Probleme behilflich sein können, die diesen Fehler bekanntermaßen verursachen.

Weitere Informationen

Anders als bei einigen Fehlern in Visual Basic gibt es für den Fehler 429 immer mehrere Ursachen. Das Problem tritt infolge eines Fehlers in der Anwendung oder Systemkonfiguration oder einer fehlenden oder beschädigten Komponente auf. Zum Ermitteln der genauen Ursache müssen Sie alle anderen Möglichkeiten ausschließen. Wenn dieser Fehler auf einem Clientcomputer auftritt, müssen Sie eine Reihe von Punkten überprüfen, um den Fehler zu isolieren und zu beheben.

Die weiter unten aufgeführten Informationen können als praktische Vorschläge bei der Problembehandlung dieses Fehlers dienen, wenn Sie mit Office-Anwendungen arbeiten. Einige dieser Informationen können sich auch auf nicht für Office verwendete COM-Server beziehen, aber in diesem Artikel wird davon ausgegangen, dass Sie versuchen, Microsoft Office zu automatisieren.

Überprüfen des Codes

Der erste Schritt bei der Problemsuche besteht in der Überprüfung des Codes. Bevor Sie mit der Problembehandlung des Fehlers beginnen können, müssen Sie wissen, wo der Fehler aufgetreten ist. Versuchen Sie, ihn auf eine einzige Codezeile einzugrenzen.

Wenn Sie den fehlerhaften Code gefunden haben, versuchen Sie Folgendes:
  • Vergewissern Sie sich, dass der Code explizite Objekterstellung verwendet. Ein Problem ist immer einfacher zu finden und zu identifizieren, wenn es auf eine einzige Aktion eingegrenzt werden kann. Verwenden Sie beispielsweise folgende Methoden nicht:
    Application.Documents.Add 'DON'T USE THIS!!
    						
    oder:
    
    Dim oWordApp As New Word.Application 'DON'T USE THIS!!
    '... some other code
    oWordApp.Documents.Add
    						
    Beide dieser Methoden verwenden implizite Objekterstellung. Microsoft Word wird erst gestartet, wenn die Variable mindestens einmal aufgerufen wurde. Da die Variable in verschiedenen Teilen des Programms aufgerufen werden könnte, würde dies eine Lokalisierung des Problems erschweren. Außerdem ist nicht klar, ob das Problem bei der Erstellung des Anwendungsobjekts oder des Dokumentobjekts auftritt.

    Erzeugen Sie stattdessen explizite Aufrufe, die jedes Objekt einzeln erstellen:
    Dim oWordApp As Word.Application
    Dim oDoc As Word.Document
    Set oWordApp = CreateObject("Word.Application")
    '... some other code
    Set oDoc = oWordApp.Documents.Add
    						
    Auf diese Weise lässt sich das Problem einfacher eingrenzen, und der Code ist einfacher zu lesen.
  • Verwenden Sie beim Erstellen einer Instanz einer Microsoft Office-Anwendung CreateObject anstelle von New. CreateObject kann dem von den meisten Visual C++-Clients verwendeten Erstellungsprozess genauer zugeordnet werden und lässt mögliche Änderungen der Server-CLSID zwischen Versionen zu. CreateObject kann sowohl mit früh als auch mit spät gebundenen Objekten verwendet werden.
  • Vergewissern Sie sich, dass die an CreateObject übergebene Zeichenfolge "ProgID" korrekt und versionsunabhängig ist (verwenden Sie also besser "Excel.Application" als "Excel.Application.8"). Es könnte sein, dass das System, bei dem der Fehler auftritt, eine ältere oder neuere Microsoft Office-Version als die von Ihnen in der "ProgID" angegebene hat.
  • Verwenden Sie zum Debuggen von Anwendungen, die nicht in der IDE ausgeführt werden können, den Befehl Erl, um die Zeilennummer der fehlschlagenden Zeile anzuzeigen. Beispielsweise zeigt der folgende Code Ihnen an, welches Automatisierungsobjekt nicht erstellt werden kann (Word oder Excel):
    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 eine Kombination von Meldungsfeldern und Zeilennummern, um den Fehler einzugrenzen.
  • Versuchen Sie, spät gebundene Objekte zu verwenden (zum Beispiel das Objekt "Dim oWordApp As"). Bei früh gebundenen Objekten müssen deren benutzerdefinierte Schnittstellen über Prozessgrenzen hinweg gemarshallt werden. Wenn während CreateObject oder New beim Marshalling einer benutzerdefinierten Schnittstelle ein Problem auftritt, wird ein Fehler 429 angezeigt. Ein spät gebundenes Objekt verwendet eine systemdefinierte Schnittstelle (IDispatch), für deren Marshalling kein benutzerdefinierter Proxy benötigt wird. Versuchen Sie, ein spät gebundenes Objekt zu verwenden, um festzustellen, ob dies einen Unterschied macht.

    Wenn das Problem nur bei einem früh gebundenen Objekt auftritt, besteht das Problem bei der Serveranwendung und kann normalerweise durch Neuinstallation der Anwendung behoben werden (siehe weiter unten).
  • Wenn Sie von einer ASP-Seite oder einer MTS-Komponente aus automatisieren, verwenden Sie CreateObject anstelle von Server.CreateObject(). Bei Verwendung von Server.CreateObject wird die Office-Anwendung unter der Identität eines MTS-Pakets instanziiert, was bei Microsoft Office bekanntermaßen zu Problemen führt.

Überprüfen des Automatisierungsservers

Die häufigsten Gründe für einen Fehler bei CreateObject oder New sind Probleme mit der Serveranwendung selbst. Üblicherweise werden diese Probleme durch die Konfiguration oder das Setup der Anwendung ausgelöst. Dabei sind einige Aspekte zu überprüfen:
  • Vergewissern Sie sich, dass die Microsoft Office-Anwendung, die Sie automatisieren möchten, auf dem lokalen Computer installiert ist, und stellen Sie sicher, dass Sie die Anwendung über Start und Ausführen starten können. Wenn das Programm nicht manuell gestartet werden kann, funktioniert es auch nicht mittels Automatisierung.
  • Registrieren Sie die Anwendung neu, indem Sie auf Start und auf Ausführen klicken, den Pfad zum Server in das Dialogfeld Ausführen eingeben und dann /RegServer an das Ende der Zeile anfügen. Klicken Sie auf OK. Die Anwendung sollte ohne Meldung ausgeführt und als COM-Server neu registriert werden. Wenn das Problem ein fehlender Registrierungsschlüssel ist, wird es hierdurch normalerweise behoben.
  • Untersuchen Sie den Schlüssel "LocalServer32" unter der CLSID für die Anwendung, die Sie automatisieren möchten. Stellen Sie sicher, dass er auf den korrekten Speicherort für die Anwendung zeigt und dass der Pfad einen kurzen Pfadnamen (DOS 8.3-Format) hat. Auch wenn es keine unbedingte Voraussetzung ist, dass ein Server mit einem kurzen Pfadnamen registriert wird, können lange Pfadnamen mit eingebetteten Leerzeichen auf einigen Systemen bekanntermaßen Probleme verursachen (siehe weiter unten).

    Starten Sie zum Überprüfen des für den Server gespeicherten Pfadschlüssels den Windows-Registrierungseditor, indem Sie auf Start und auf Ausführen klicken und dann regedit in das Dialogfeld Ausführen eingeben. Gehen Sie zum Schlüssel HKEY_CLASSES_ROOT\CLSID. Unter diesem Schlüssel finden Sie die CLSIDs für die auf dem System registrierten Automatisierungsserver. Suchen Sie anhand der unten angegebenen Werte den Schlüssel, der für die Office-Anwendung steht, die Sie automatisieren möchten, und überprüfen Sie, ob der Pfad unter dem Schlüssel "LocalServer32" korrekt ist.
       +========================+=========================================+
       | Office-Server          | CLSID-Schlüssel                         |
       +========================+=========================================+
       | 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}  |
       +------------------------+-----------------------------------------+
    						
    Entspricht der Pfad dem tatsächlichen Speicherort der Datei? Denken Sie daran, dass kurze Pfadnamen den Eindruck eines korrekten Pfads erwecken können, auch wenn dies nicht der Fall ist. Beispielsweise haben sowohl Microsoft Office als auch Microsoft Internet Explorer (wenn sie in ihrem Standardspeicherort installiert sind) denselben kurzen Pfadnamen, der in etwa wie folgt aussieht: C:\PROGRA~1\MICROS~X\ (wobei X eine Zahl ist). Von einem kurzen Pfadnamen kann nicht unmittelbar auf die dahinter stehende Pfadangabe geschlossen werden.

    Sie können testen, ob der Pfad wirklich korrekt ist, indem Sie den Wert aus der Registrierung kopieren und in das Dialogfeld Ausführen einfügen (entfernen Sie die Option /Automation, bevor Sie die Anwendung ausführen). Wird die Anwendung gestartet, wenn Sie auf OK klicken? Wenn ja, wurde der Server korrekt registriert. Wenn nicht, sollten Sie den Wert des Schlüssels "LocalServer32" durch den korrekten Pfad ersetzen (verwenden Sie einen kurzen Pfadnamen, falls möglich).
  • Es ist bekannt, dass Probleme beim Automatisieren von Word oder Excel auftreten, wenn die Vorlage "Normal.dot" (Word) bzw. die Ressourcendatei "Excel.xlb" (Excel) beschädigt ist. Suchen Sie auf den lokalen Festplatten nach allen Instanzen von "Normal.dot" oder "*.xlb", um zu überprüfen, ob eine der Dateien beschädigt ist. (Beachten Sie, dass beim Ausführen von Windows 2000, Windows NT oder Windows 95/98 mit aktivierten Profilen mehrere Kopien dieser Dateien zu finden sind, eine für jedes Benutzerprofil auf dem System.) Benennen Sie die Datei(en) "Normal.dot" oder "*.xlb" vorübergehend um, und testen Sie Ihre Automatisierung erneut (Word und Excel erstellen diese Dateien, wenn sie sie nicht finden können). Funktioniert der Code jetzt? Wenn ja, sollten Sie die von Ihnen umbenannten Dateien löschen, da sie beschädigt sind. Wenn nicht, müssen Sie diese Dateien wieder in ihren Originalnamen umbenennen, um benutzerdefinierte Einstellungen zu erhalten, die in diesen Dateien gespeichert sind.
  • Wenn Sie mit einem Windows NT-, Windows 2000-, Windows XP- oder Windows Server 2003-System arbeiten, führen Sie die Anwendung unter dem Administratorkonto aus. Office-Server erfordern Lese-/Schreibzugriff auf die Registrierung und das Laufwerk und werden möglicherweise nicht korrekt geladen, wenn ihnen diese Berechtigungen durch Ihre aktuellen Sicherheitseinstellungen verweigert werden.

Überprüfen des Systems

Auch die Systemkonfiguration kann Probleme bei der Erstellung von Out-of-Process-COM-Servern verursachen. Die folgenden Punkte sollten auf Systemen überprüft werden, auf denen der Fehler auftritt:
  • Tritt das Problem bei einem Out-of-Process-Server auf? Wenn Sie eine Anwendung haben, die nur einen bestimmten COM-Server verwendet (beispielsweise Word), sollten Sie einen anderen Out-of-Process-Server testen, um sicherzustellen, dass das Problem nicht in der COM-Schicht selbst liegt. Wenn auf diesem System kein Out-of-Process-COM-Server erstellt werden kann, ist eine Neuinstallation der OLE-Systemdateien (siehe unten) oder des Betriebssystems erforderlich, um das Problem zu beheben.
  • Überprüfen Sie die Versionsnummern der OLE-Systemdateien, die die Automatisierung verwalten. Diese Dateien werden üblicherweise als Satz installiert und sollten übereinstimmende Build-Nummern haben. Ein nicht korrekt konfiguriertes Setupprogramm kann die Dateien irrtümlicherweise einzeln installieren, sodass die Build-Nummern nicht übereinstimmen. Überprüfen Sie die Dateien auf übereinstimmende Builds, um Probleme mit der Automatisierung zu vermeiden.

    Sie finden die Automatisierungsdateien im Verzeichnis "Windows\System" oder "Winnt\System32". Die folgende Liste zeigt die zu überprüfenden Dateien:
       +---------------+-------------+-----------------+
       | Dateiname     |  Version    | Änderungsdatum  |
       +---------------+-------------+-----------------+
       | Asycfilt.dll  |  2.40.4275  | 08. März 1999   |
       | Oleaut32.dll  |  2.40.4275  | 08. März 1999   |
       | Olepro32.dll  |  5.0.4275   | 08. März 1999   |
       | Stdole2.tlb   |  2.40.4275  | 08. März 1999   |
       +---------------+-------------+-----------------+
    						
    Überprüfen Sie die Dateiversion, indem Sie in Windows Explorer mit der rechten Maustaste auf die Datei klicken und Eigenschaften aus dem Kontextmenü auswählen. Dabei kommt es vor allem auf die letzten vier Ziffern der Dateiversion (die Build-Nummer) und das letzte Änderungsdatum an. Sie sollten sicherstellen, dass diese Werte für alle Automatisierungsdateien identisch sind.

    Beachten Sie, dass die oben angegebenen Versionsnummern und Daten nur Beispielwerte sind. Ihre Werte können davon abweichen. Es kommt nicht darauf an, dass die Werte mit der Tabelle übereinstimmen, sondern dass sie untereinander identisch sind.

    Wenn die Dateien keine übereinstimmenden Build-Nummern oder Änderungsdaten haben, können Sie ein selbstextrahierendes Programm herunterladen, das Ihre Automatisierungsdateien aktualisiert. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
    290887 "VBRun60sp6.exe" installiert Visual Basic 6.0 SP6-Laufzeitdateien
  • Unter Windows NT 4.0 gibt es ein bekanntes Problem mit dem Starten von Automatisierungsservern, die sich in einem Ordner befinden, dessen Name ein eingebettetes Leerzeichen enthält und/oder einem anderen Ordnernamen ähnelt, wobei die ersten 8 Zeichen identisch sind. Beispielsweise kann der Start eines Servers während eines CreateObject-Aufrufs fehlschlagen, wenn sich der Server im Verzeichnis "C:\Programme\Mein Ordner" befindet, und auf dem System gibt es einen anderen Ordner mit dem Namen "C:\Programmieren\Mein Ordner". Weitere Informationen zu diesem Problem und wie Sie es umgehen können, finden Sie im folgenden Artikel der Microsoft Knowledge Base:
    185126 BUG: nicht unter Windows NT 4.0 kann sich von COM/OLE-Server gestartet werden

Neuinstallation von Microsoft Office

Wenn sich das Problem mit keinem der vorgenannten Schritte beheben lässt, sollten Sie eine Deinstallation und anschließende Neuinstallation von Microsoft Office erwägen. Microsoft empfiehlt, dass Sie die vorhandene Version zuerst deinstallieren und dann mithilfe der Original-Installationsmedien neu installieren.

Eine vollständige Liste der zu entfernenden Komponenten finden Sie in den folgenden Artikeln der Microsoft Knowledge Base:
219423 OFF2000: Wie Sie Microsoft Office CD1 vollständig entfernen können
158658 OFF97: Wie man Microsoft Office 97 vollständig entfernt

Informationsquellen

Weitere Informationen zur Problembehandlung der Fehlermeldung "429" finden Sie im folgenden Artikel der Microsoft Knowledge Base:
240377 Überprüfen der ordnungsgemäßen Installation von Jet 3.5 (Teil I)
Neueste Informationen und Codebeispiele für die Microsoft Office-Automatisierung finden Sie auf folgender Microsoft Online Support-Website:
http://support.microsoft.com/ofd

Eigenschaften

Artikel-ID: 244264 - Geändert am: Dienstag, 6. Februar 2007 - Version: 5.1
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 6.0 Enterprise Edition
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
  • Microsoft Access 97 Standard Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft FrontPage 2002 Standard Edition
  • Microsoft FrontPage 2000 Standard Edition
  • Microsoft Outlook 2002 Standard Edition
  • Microsoft Outlook 2000 Standard Edition
  • Microsoft Outlook 97 Standard Edition
  • Microsoft Outlook 98 Standard Edition
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft PowerPoint 97 Standard Edition
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Microsoft Word 97 Standard Edition
Keywords: 
kbautomation kbfaq kbinfo KB244264
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com