Você pode receber a mensagem de erro "erro de tempo de execução '-2147023174 ' (800706ba)" ou "erro em tempo de execução ' 462 '" ao executar o código do Visual Basic que usa automação para controlar o Word

Sintomas

Ao executar o código do Microsoft Visual Basic que usa a automação para controlar o Microsoft Word, você pode receber uma das seguintes mensagens de erro:mensagem de erro 1

Erro de automação '-2147023174 ' (800706ba) de erro em tempo de execução

Mensagem de erro 2

Erro em tempo de execução ' 462 ': a máquina do servidor remoto não existe ou não está disponível

Causa

O Visual Basic estabeleceu uma referência para o Word devido a uma linha de código que chama um objeto, um método ou uma propriedade do Word sem qualificá-lo com uma variável de objeto do Word. O Visual Basic não libera essa referência até que você encerre o programa. Essa referência virtude interfere com o código de automação quando o código é executado mais de uma vez.

Resolução

Modifique o código para que cada chamada para um objeto, método ou Propriedade do Word seja qualificada com a variável de objeto apropriada.

Status

Este é o comportamento padrão.

Informações adicionais

Para automatizar o Word, você estabelece uma variável de objeto que geralmente se refere ao objeto do Word ou ao objeto do documento. Em seguida, outras variáveis de objeto podem ser definidas para se referir a uma seleção, a um intervalo ou a outros objetos no modelo de objeto do Word. Ao escrever código para usar um objeto, um método ou uma propriedade do Word, você sempre deve preceder a chamada com a variável de objeto apropriada. Se você não fizer isso, o Visual Basic usará uma referência de variável global oculta que ele define para a instância em execução no momento. Se o Word for desligado ou se a variável de objeto declarado for liberada, a variável global oculta agora fará referência a um objeto inválido (destruído). Ao executar o código de automação novamente, as chamadas para essa variável de objeto oculto falharão com o erro mencionado anteriormente. As etapas a seguir ilustram como reproduzir esse problema e como corrigi-lo.

Etapas para reproduzir o comportamento

  1. Inicie um novo projeto EXE padrão no Visual Basic. O Form1 é criado por padrão.

  2. Clique em referências no menu projeto e, em seguida, clique em uma das seguintes opções:

    • Para o Office Word 2007, clique em biblioteca de objetos do Microsoft Word 12,0

    • Para o Word 2003, clique em biblioteca de objetos do Microsoft Word 11,0

    • Para o Word 2003, clique em biblioteca de objetos do Microsoft Word 10,0

    • Para o Word 2000, clique em biblioteca de objetos do Microsoft Word 9,0.

    • Para o Word 97, clique em biblioteca de objetos do Microsoft Word 8,0.

  3. Colocar um CommandButton em Form1.

  4. Copie o código a seguir na janela de código do 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. No menu executar , clique em Iniciar ou pressione a tecla F5 para iniciar o programa.

  6. Clique no CommandButton. Não ocorre nenhum erro. No entanto, uma referência para o Word foi criada e não foi liberada.

  7. Clique no CommandButton novamente e observe que você recebe o erro descrito anteriormente.Observação O erro ocorre porque o código se refere ao método InchesToPoints sem ter precedente a chamada com a variável de objeto oWord.

  8. Pare o projeto e altere a seguinte linha:

    .PageSetup.LeftMargin = InchesToPoints(1.25)

    se

    .PageSetup.LeftMargin = oWord.InchesToPoints(1.25)
  9. Execute o programa novamente. Em seguida, clique no CommandButton. Não ocorre nenhum erro.

  10. Clique no CommandButton novamente e observe que você recebe o erro.Observação O erro ocorre porque o código refere-se ao objeto de intervalo da seção ActiveDocument um sem precedente à chamada com a variável de objeto oWord.

  11. Pare o projeto e altere a seguinte linha:

    Set oRange = ActiveDocument.Sections(1).Range

    se

    Set oRange = oWord.ActiveDocument.Sections(1).Range
  12. Execute o programa novamente. Observe que você pode executar o código várias vezes sem erro.

Ao criar um projeto do Visual Basic que automatiza o Word, se o projeto tiver uma referência à biblioteca de objetos do Microsoft Word, o código de exemplo dos objetos, métodos e propriedades do modelo de objeto do Word está disponível no arquivo de ajuda do Word. Quando o cursor está sobre uma palavra-chave em seu código, você verá qualquer texto de ajuda aplicável pressionando a tecla F1. O código de exemplo no tópico da ajuda será o código do Visual Basic for Applications do Microsoft Word. Ele não mostrará as referências de objeto exigidas pelo seu código do Visual Basic. Será necessário adicionar os qualificadores conforme apropriado.

Referências

Para obter mais informações, consulte os seguintes artigos na base de dados de conhecimento da Microsoft:

178510 PROBLEMA: falha no método de automação do Excel do objeto ' _Global '

167223 Arquivo de ajuda de automação do Microsoft Office 97 disponívelPara obter informações adicionais sobre a automação dos aplicativos do Office, clique no número abaixo para ler o artigo na base de dados de conhecimento da Microsoft:

222101 Como: localizar e usar a documentação do modelo de objeto do Office

Precisa de mais ajuda?

Expanda suas habilidades
Explore o treinamento
Obtenha novos recursos primeiro
Ingressar no Microsoft Insider

Estas informações foram úteis?

Qual é o seu grau de satisfação com a qualidade da tradução?

O que afetou sua experiência?

Algum comentário adicional? (Opcional)

Obrigado por seus comentários!

×