Dotyczy
Office Products

Symptomy

Po uruchomieniu kodu języka Microsoft Visual Basic, który używa automatyzacji do sterowania Word Firmy Microsoft, może zostać wyświetlony jeden z następujących komunikatów o błędach: Komunikat o błędzie 1

Błąd czasu wykonywania "-2147023174" (800706ba) Błąd automatyzacji

Komunikat o błędzie 2

Błąd czasu wykonywania "462": zdalny serwer nie istnieje lub jest niedostępny

Przyczyna

Język Visual Basic ustanowił odwołanie do Word ze względu na wiersz kodu, który wywołuje obiekt, metodę lub właściwość Word bez kwalifikowania go za pomocą zmiennej obiektowej Word. Język Visual Basic nie zwalnia tego odwołania do czasu zakończenia programu. To błędne odwołanie koliduje z kodem automatyzacji, gdy kod jest uruchamiany więcej niż raz.

Rozwiązanie

Zmodyfikuj kod tak, aby każde wywołanie Word obiektu, metody lub właściwości było kwalifikowane z odpowiednią zmienną obiektową.

Stan

Takie działanie jest celowe.

Więcej informacji

Aby zautomatyzować Word, należy ustanowić zmienną obiektową, która zwykle odwołuje się do Word obiektu Application lub Document. Inne zmienne obiektowe można następnie ustawić tak, aby odwoływać się do zaznaczenia, zakresu lub innych obiektów w modelu obiektów Word. Podczas pisania kodu w celu użycia obiektu Word, metody lub właściwości należy zawsze poprzedzić wywołanie odpowiednią zmienną obiektową. W przeciwnym razie w języku Visual Basic zostanie użyte ukryte odwołanie do zmiennej globalnej, które jest ustawiane na bieżąco uruchomione wystąpienie. Jeśli Word jest zamknięciem lub jeśli deklarowana zmienna obiektowa zostanie zwolniona, ukryta zmienna globalna będzie teraz odwoływać się do nieprawidłowego (zniszczonego) obiektu. Ponowne uruchomienie kodu automatyzacji spowoduje niepowodzenie wywołań tej ukrytej zmiennej obiektowej z wymienionym błędem.W poniższych krokach pokazano, jak odtworzyć ten problem i jak go rozwiązać.  

Procedura reprodukowania zachowania

  1. Rozpoczynanie nowego projektu Standard EXE w języku Visual Basic. Domyślnie tworzony jest formularz1.

  2. Kliknij pozycję Odwołania w menu Projekt , a następnie kliknij jedną z następujących opcji:

    • W przypadku pakietu Office Word 2007 kliknij pozycję Biblioteka obiektów microsoft Word 12.0

    • W przypadku programu Word 2003 kliknij pozycję Biblioteka obiektów microsoft Word 11.0

    • W przypadku programu Word 2003 kliknij pozycję Biblioteka obiektów microsoft Word 10.0

    • W systemie Word 2000 kliknij pozycję Biblioteka obiektów microsoft Word 9.0.

    • W przypadku Word 97 kliknij pozycję Biblioteka obiektów firmy Microsoft Word 8.0.

  3. Umieść przycisk polecenia w formularzu Form1.

  4. Skopiuj następujący kod do okna kodu formularza1:

          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. W menu Uruchom kliknij przycisk Start lub naciśnij klawisz F5, aby uruchomić program.

  6. Kliknij przycisk CommandButton. Nie występuje żaden błąd. Jednak odwołanie do Word zostało utworzone i nie zostało opublikowane.

  7. Kliknij ponownie przycisk CommandButton i zwróć uwagę, że zostanie wyświetlony opisany wcześniej błąd.Uwaga Błąd występuje, ponieważ kod odwołuje się do metody InchesToPoints bez poprzedzania wywołania zmienną obiektu oWord.

  8. Zatrzymaj projekt i zmień następujący wiersz:

    .PageSetup.LeftMargin = InchesToPoints(1.25)
    

    -to--  

    .PageSetup.LeftMargin = oWord.InchesToPoints(1.25)
    
  9. Uruchom program ponownie. Następnie kliknij przycisk CommandButton. Nie występuje żaden błąd.

  10. Kliknij ponownie przycisk CommandButton i zwróć uwagę, że zostanie wyświetlony błąd.Uwaga Ten błąd występuje, ponieważ kod odwołuje się do obiektu Zakres sekcji ActiveDocument 1 bez poprzedzania wywołania zmienną obiektu oWord.

  11. Zatrzymaj projekt i zmień następujący wiersz:

    Set oRange = ActiveDocument.Sections(1).Range
    

    -to--  

    Set oRange = oWord.ActiveDocument.Sections(1).Range
    
  12. Uruchom program ponownie. Pamiętaj, że kod można uruchamiać wiele razy bez błędu.

Podczas tworzenia projektu języka Visual Basic automatyzującego Word, jeśli projekt zawiera odwołanie do biblioteki obiektów microsoft Word, z pliku Pomocy Word jest dostępny przykładowy kod obiektów, metod i właściwości modelu obiektów Word. Po umieszczeniu kursora na wyrazie kluczowym w kodzie zostanie wyświetlony odpowiedni tekst Pomocy, naciskając klawisz F1.Przykładowy kod w temacie Pomocy będzie kodem microsoft Word Visual Basic for Applications. Nie będzie pokazywać odwołań do obiektów wymaganych przez kod języka Visual Basic. Konieczne będzie dodanie odpowiednich kwalifikatorów.

Informacje

Aby uzyskać dodatkowe informacje, zobacz następujące artykuły z bazy wiedzy Microsoft Knowledge Base:

178510 PRB: Metoda automatyzacji programu Excel dla obiektu "_Global nie powiodła się"

Aby uzyskać dodatkowe informacje na temat automatyzacji aplikacji pakietu Office, kliknij poniższy numer artykułu, aby wyświetlić ten artykuł w bazie wiedzy Microsoft Knowledge Base:

Word omówienie modelu obiektów

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.