Artikel-ID: 292744 - Geändert am: Freitag, 23. November 2007 - Version: 7.1

Fehler: Beim Aufrufen des Find-Objekts in Word wird im Automatisierungsclient eine Fehlermeldung angezeigt oder der Automatisierungsclient stürzt ab

SystemtippDieser Artikel bezieht sich auf ein anderes Betriebssystem als das von Ihnen verwendete. Für Sie möglicherweise nicht relevante Artikelinhalte wurden deaktiviert.
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
292744  (http://support.microsoft.com/kb/292744/EN-US/ ) BUG: Automation client receives an error message or crashes when the client calls the Find object in Word
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.

Auf dieser Seite

Alles erweitern | Alles schließen

Problembeschreibung

Wenn Sie eine nicht aktive Clientanwendung verwenden, die eine frühe Bindung zur Automatisierung von Microsoft Word 97 oder höheren Word-Versionen verwendet, stürzt die Anwendung möglicherweise wegen einer Zugriffsverletzung ab, oder es wird Ihnen eine der folgenden Fehlermeldungen angezeigt:

Von Microsoft Visual Basic:
Laufzeitfehler '-2147023113 (800706f7)':
Die Methode '~' für das Objekt '~' ist fehlgeschlagen
Laufzeitfehler '-2147023113 (800706f7)':
Die Methode 'Execute' für das Objekt 'Find' ist fehlgeschlagen
Laufzeitfehler 430:
Klasse unterstützt keine Automatisierung oder unterstützt die erwartete Schnittstelle nicht.
Von Microsoft Visual C++:
HRESULT = 0x800706F7
RPC_X_BAD_STUB_DATA - Der Stub erhielt falsche Daten.
Hinweis: In Debugbuilds wird Ihnen in einem Assert-Dialogfeld eine Warnmeldung über einen beschädigten Stack angezeigt, und der EAX-Wert lautet wie oben aufgeführt. In Releasebuilds führt die Beschädigung des Stacks eher dazu, dass die Anwendung kurz nach diesem Moment abstürzt. Der HRESULT-Wert entspricht jedoch eher dem oben aufgeführten Wert.

Das Problem tritt auf einigen Computern permanent auf, auf anderen Computern hingegen möglicherweise nie. Das Installieren einer neuen Anwendung oder eines Microsoft Excel Service Packs kann dazu führen, dass dieses Problem auf einem Computer auftritt, der zuvor funktioniert hat.

Ursache

Mehrere von Word für seine Schnittstellenbezeichner verwendete GUIDs (Globally Unique Identifiers) wurden von Excel 5.0 für ein früheres Objektmodell verwendet, das nun veraltet ist.

Wenn die Excel 5.0-Typbibliothek erneut in einem System registriert wird, verweisen die Schnittstellen-GUIDs in der Registrierung, die auf die Word-Typbibliothek verweisen sollten, auf die Excel 5.0-Bibliothek, und COM kann irrtümlicherweise die falsche Proxy-V-Tabelle für einen nicht aktiven Client aufstellen, indem eine frühe Bindung zu Word verwendet wird. Aufrufe, die an diesen Proxy gerichtet sind, geben Fehler zurück oder stürzen ab, weil der Proxy für eine Disp-Schnittstelle für Excel konfiguriert wurde anstatt für eine Disp-Schnittstelle für die erwartete Word-Schnittstelle.

Die folgenden GUIDs sind in der Excel 5.0-Typbibliothek sowie in den Word 8.0-, 8.1-, 10.0- und 11.0-Typbibliotheken dupliziert.
Tabelle minimierenTabelle vergrößern
Schnittstellen-ID (GUID)Word-SchnittstelleExcel 5.0-Disp-Schnittstelle
{000209B1-0000-0000-C000-000000000046}ReplacementWorksheets
{000209AD-0000-0000-C000-000000000046}DictionaryModule
{000209AE-0000-0000-C000-000000000046}ReadabilityStatisticsModules
{000209AF-0000-0000-C000-000000000046}ReadabilityStatisticDialogSheet
{000209B0-0000-0000-C000-000000000046}FindDialogSheets
Wenn die Word-Typbibliothek einwandfrei registriert wurde, erstellt COM den korrekten Proxy, und nicht aktive Aufrufe funktionieren normal.

Lösung

Wenden Sie eine der folgenden Methoden an, um das Problem zu beheben.
  • Verändern Sie Ihren Code, um eine späte Bindung zu verwenden, wenn Sie an einer der zuvor aufgeführten Word-Schnittstellen Methoden oder Eigenschaften aufrufen.
  • Registrieren Sie die Word-Typbibliothek in dem System, in dem das Problem auftritt, neu.
Es wird empfohlen, zur Lösung des Problems die späte Bindung zu verwenden. Da beide Typbibliotheken Schnittstellen beschreiben, die die IDispatch-Schnittstelle implementieren, funktionieren Aufrufe an eine der IDispatch-Methoden unabhängig davon, welche Bibliothek zuletzt im System registriert wurde. Dies ist die einzige Möglichkeit sicherzustellen, dass Ihr Code diesen Fehler nicht in Systemen verursacht, die Sie nicht verwalten.

Für Kunden, die Clientanwendungen verwenden, die nicht für die Verwendung einer späten Bindung kompiliert werden können, bietet es sich an, die Word-Typbibliothek neu zu registrieren, um das Problem in den meisten Fällen zu beheben. Da das Problem wiederkehrt, wenn die Excel 5.0-Bibliothek neu registriert wird, stellt diese Methode keine ideale Lösung des Problems dar. Die Chancen, dass die Excel 5.0-Bibliothek neu registriert wird, sind jedoch gering. Insofern sollte diese Methode für die meisten Benutzer funktionieren.

Wenn Sie die Word-Typbibliothek neu registrieren möchten, suchen Sie die entsprechende Typbibliothek für die im System installierte Word-Version.
Tabelle minimierenTabelle vergrößern
VersionName der Bibliothek
Word 97Msword8.olb
Word 2000Msword9.olb
Word 2002Msword.olb
Word 2003Msword.olb
Verwenden Sie anschließend von der Befehlszeile die Datei "Regtlib.exe" zusammen mit dem vollständigen Pfad zur Typbibliothek, um die Bibliothek für COM neu zu registrieren. "Regtlib.exe" ruft in der Datei der Typbibliothek (.tlb bzw. .olb), die eingefügt wird, die APIs LoadTypeLib und RegisterTypeLib auf. COM repariert die falsch konfigurierten Registrierungsschlüssel.

"Regtlib.exe" ist im Windows Bibliotheken-Update enthalten. Weitere Informationen zum Bibliotheken-Update finden Sie im folgenden Artikel der Microsoft Knowledge Base:
197298  (http://support.microsoft.com/kb/197298/DE/ ) INFO: Microsoft Bibliotheken-Update: Beschreibung, Bezugsquellen und Hintergrund

Status

Microsoft hat bestätigt, dass es sich hierbei um einen Fehler bei den oben genannten Microsoft-Produkten handelt.

Weitere Informationen

Die Excel 5.0-Typbibliothek (Xl5en32.olb) ist für Rückwärtskompatibilität vorgesehen und wird von Clients verwendet, die vor Excel 97 geschrieben wurden. Die Typbibliotheken für Excel 97 und höher stehen mit der Word-Typbibliothek nicht in Konflikt. Die Excel 5.0-Bibliothek wird nicht auf die normale Weise registriert. Daher tritt dieses Problem bei den meisten Clients nicht auf. Clients, bei denen dieses Problem auftritt, haben möglicherweise ein spezifisches Produkt installiert, das die Bibliothek verwendet, wobei die Registrierung der Bibliothek nach der Office-Installation erfolgt ist.

Schritte zum Reproduzieren des Problems

  1. Suchen Sie die Excel 5.0-Typbibliothek (Xl5en32.olb), und registrieren Sie sie anschließend, indem Sie an der Eingabeaufforderung Regtlib eingeben.
  2. Erstellen Sie in Visual Basic ein Standard-EXE-Projekt. Form1 wird standardmäßig erstellt.
  3. Fügen Sie zu Form1 eine Schaltfläche hinzu, und fügen Sie anschließend das folgende Codebeispiel in den Codeabschnitt von Form1 ein.
    Private Sub Command1_Click()
       Dim oApp As Word.Application
       Dim oDoc As Word.Document
       Dim oSel As Word.Selection
          
       Set oApp = New Word.Application
       oApp.Visible = True
       
       Set oDoc = oApp.Documents.Add
       Set oSel = oApp.Selection
       
       oSel.TypeText "This is a test. You too can automate Word."
       oSel.Start = 0
       
       oSel.Find.Execute "Word", , , , , , True, _
          wdFindContinue, , "Microsoft Word 2000", wdReplaceAll
          
       MsgBox "Did it work?"
       
       Set oSel = Nothing
       oDoc.Saved = True
       oDoc.Close
       Set oDoc = Nothing
       
       oApp.Quit
       Set oApp = Nothing
       
    End Sub
    					
  4. Klicken Sie im Menü Projekt auf Verweise.
  5. Wählen Sie im Dialogfeld Verweise die Bibliothek Microsoft Word 8.0-Objektbibliothek (bzw. wählen Sie die Word 9.0-Objektbibliothek, die Word 10.0-Objektbibliothek oder die Word 11.0-Objektbibliothek), und klicken Sie anschließend auf OK.
  6. Kompilieren Sie den Code und führen Sie ihn aus, oder drücken Sie die Taste [F5], um den Code im Debugger auszuführen. Klicken Sie auf die Befehlsschaltfläche. Es wird die im Abschnitt "Problembeschreibung" aufgeführte Fehlermeldung angezeigt.
  7. Beheben Sie das Problem, indem Sie die Word-Typbibliothek wie im Abschnitt "Lösung" erläutert neu registrieren. Sie können aber auch mithilfe des folgenden Codebeispiels die Verwendung der frühen Bindung des Selection-Objekts ersetzen, um eine späte Bindung zu verwenden.
        Dim oSel As Object
    					

Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Office Word 2007
  • Microsoft Office Word 2003
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Microsoft Word 97 Standard Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 6.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Professional Edition
Keywords: 
kbbug kbnofix kbautomation KB292744
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.