Artikel-ID: 189618 - Geändert am: Samstag, 21. Januar 2006 - Version: 7.0

Problem: Automatisierungsfehler beim Aufruf unzureichend definierter Methode oder Eigenschaft

Dieser Artikel wurde zuvor veröffentlicht unter D189618
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
189618  (http://support.microsoft.com/kb/189618/EN-US/ ) You may receive the "Run-time error '-2147023174' (800706ba)" error message or the "Run-time error '462'" when you run Visual Basic code that uses Automation to control Word in Office XP Developer and in Office 2000 Developer
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

Beim Ausführen von Code, der Automatisierung zum Steuern von Microsoft Word 97 oder Word 2000 verwendet, wird möglicherweise eine der folgenden Fehlermeldungen angezeigt:

Fehlermeldung 1
Laufzeitfehler '-2147023174' (800706ba)
Automatisierungsfehler
Fehlermeldung 2
Laufzeitfehler '462': Der Remote-Server-Computer existiert nicht oder ist nicht verfügbar.

Ursache

Visual Basic hat einen Verweis zu Word eingerichtet, der mittels einer Codezeile funktioniert, die ein Word-Objekt, eine Word-Methode oder -Eigenschaft aufruft, ohne dass dieses oder diese durch eine Word-Objektvariable definiert wird. Visual Basic gibt diesen Verweis erst wieder frei, wenn Sie das Programm beenden. Dieser unzureichend definierte Verweis verursacht einen Konflikt mit dem Automatisierungscode, wenn der Code mehr als ein Mal ausgeführt wird.

Lösung

Ändern Sie den Code so, dass jeder Aufruf eines Objekts, einer Methode oder Eigenschaft von Word durch die entsprechende Objektvariable definiert wird.

Status

Es handelt sich hierbei um ein beabsichtigtes Verhalten.

Weitere Informationen

Zum Automatisieren von Microsoft Word legen Sie eine Objektvariable fest, die normalerweise auf die Word-Anwendung oder das Dokumentobjekt verweist. Weitere Objektvariablen können dann festgelegt werden und auf eine Markierung, einen Bereich oder andere Objekte im Microsoft Word-Objektmodell verweisen. Wenn Sie Code schreiben, der ein Word-Objekt, eine Word-Methode oder -Eigenschaft verwendet, sollte dem Aufruf immer eine entsprechende Objektvariable vorhergehen. Achten Sie nicht darauf, verwendet Visual Basic einen Verweis mittels einer verborgenen globalen Variablen, die für die aktuell ausgeführte Instanz festgelegt wird. Wird Word beendet oder wird die deklarierte Objektvariable freigegeben, verweist die verborgene globale Variable auf ein ungültiges (d. h. zerstörtes) Objekt. Beim erneuten Ausführen des Automatisierungscodes schlagen Aufrufe der verborgenen Objektvariablen fehl, und die bereits genannte Fehlermeldung wird angezeigt.

Die folgenden Schritte veranschaulichen, wie das Problem reproduziert und korrigiert werden kann.

Schritte zum Reproduzieren des Verhaltens

  1. Starten Sie in Visual Basic ein neues Standard-EXE-Projekt. Form1 wird standardmäßig erstellt.
  2. Klicken Sie im Menü Projekt auf Verweise, und aktivieren Sie Microsoft Word 8.0 Object Library für Word 97. Aktivieren Sie für Word 2000 Microsoft Word 9.0 Object Library. Aktivieren Sie für Word 2002 Microsoft Word 10 Object Library.
  3. Fügen Sie eine Befehlsschaltfläche in Form1 ein.
  4. Kopieren Sie folgenden Code in das Codefenster von Form1:
          Option Explicit
    
          Private Sub Command1_Click()
             Dim oWord As Word.Application
             Dim oDoc As Word.Document
             Dim oRange as Word.Range
    
             Set oWord = CreateObject("Word.Application")
             With oWord
                 .Visible = True
                 .Activate
                 .WindowState = wdWindowStateNormal
             End With
    
             Set oDoc = oWord.Documents.Add
             MsgBox "Document open", vbMsgBoxSetForeground
             With oDoc
                 .PageSetup.LeftMargin = InchesToPoints(1.25)
             End With
    
             ' This example inserts text at the end of section one.
             Set oRange = ActiveDocument.Sections(1).Range
             With oRange
                 .MoveEnd Unit:=wdCharacter, Count:= -1
                 .Collapse Direction:=wdCollapseEnd
                 .InsertParagraphAfter
                 .InsertAfter "End of section."
             End With
    
             With oDoc
                 .Saved = True
             End With
    
             Set oRange = Nothing
             Set oDoc = Nothing
             oWord.Quit
             Set oWord = Nothing
          End Sub
    					
  5. Klicken Sie im Menü Ausführen auf Starten, oder drücken Sie F5, und das Programm zu starten.
  6. Klicken Sie auf die Befehlsschaltfläche. Ein Fehler tritt nicht auf. Es wurde jedoch ein Verweis zu Word 97 oder 2000 erstellt, der nicht wieder freigegeben wurde.
  7. Klicken Sie erneut auf die Befehlsschaltfläche, und beachten Sie, dass jetzt der bereits beschriebene Fehler auftritt.

    HINWEIS: Der Fehler tritt auf, weil der Code auf die InchesToPoints-Methode verweist, ohne dass dem Aufruf die Objektvariable oWord vorangeht.
  8. Halten Sie das Projekt an, und ändern Sie folgende Zeile:
    .PageSetup.LeftMargin = InchesToPoints(1.25)
    					
    - zu -
    .PageSetup.LeftMargin = oWord.InchesToPoints(1.25)
    					
  9. Führen Sie das Programm erneut aus. Klicken Sie dann auf die Befehlsschaltfläche. Ein Fehler tritt nicht auf.
  10. Klicken Sie erneut auf die Befehlsschaltfläche, und beachten Sie, dass der Fehler erneut auftritt.

    HINWEIS: Der Fehler tritt auf, weil der Code auf das Bereichsobjekt von Abschnitt Eins des aktiven Dokuments verweist, ohne dass dem Aufruf die Objektvariable oWord vorangeht.
  11. Halten Sie das Projekt an, und ändern Sie folgende Zeile:
     Set oRange = ActiveDocument.Sections(1).Range 					
    - zu -
    Set oRange = oWord.ActiveDocument.Sections(1).Range
    					
  12. Führen Sie das Programm erneut aus. Beachten Sie, dass Sie den Code mehrfach ohne Fehler ausführen können.
Beim Erstellen eines Visual Basic-Projekts für das Automatisieren von Word ist Beispielcode für Objekte, Methoden und Eigenschaften des Word-Objektmodells in der Word-Hilfedatei verfügbar, wenn Ihr Projekt einen Verweis auf eine Microsoft Word 8.0- oder 9.0-Objektbibliothek enthält. Wenn sich der Cursor über einem Schlüsselwort in Ihrem Code befindet, können Sie durch Drücken der Taste F1 den verfügbaren Text der Hilfe anzeigen.

Der Beispielcode im Hilfethema ist der Code für Microsoft Word Visual Basic für Applikationen. Die Objektverweise, die für Ihren Visual Basic-Code erforderlich sind, werden nicht angezeigt. Sie müssen die entsprechenden Bezeichner hinzufügen.

Verweise

Weitere Informationen finden Sie in den folgenden Artikeln der Microsoft Knowledge Base:
178510  (http://support.microsoft.com/kb/178510/DE/ ) PRB: Excel-Automatisierung schlägt zweites Mal fehl, auf dem Code Mal ausgeführt wird
167223  (http://support.microsoft.com/kb/167223/DE/ ) OFF97: Hilfedatei für Microsoft Office 97-Automation verfügbar
Weitere Informationen zur Automatisierung von Office-Anwendungen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
222101  (http://support.microsoft.com/kb/222101/DE/ ) Finden und Verwenden der Dokumentation zum Office-Objektmodell

Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 6.0 Enterprise Edition
  • Microsoft Visual Basic 4.0 Enterprise Edition
  • Microsoft Visual Basic 4.0 Standard Edition
  • Microsoft Visual Basic for Applications 5.0
  • Microsoft Office XP Developer Edition
  • Microsoft Office 2000 Developer Edition
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Microsoft Word 97 Standard Edition
Keywords: 
kberrmsg kbprogramming kbautomation kbprb KB189618
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.
 

SPRACHE AUSWÄHLEN

 

Related Support Centers