Es posible que reciba el mensaje de error "error en tiempo de ejecución '-2147023174 ' (800706ba)" o el "error en tiempo de ejecución 462 '" al ejecutar código de Visual Basic que usa automatización para controlar Word

Se aplica a: Productos Office

Síntomas


Cuando se ejecuta código de Microsoft Visual Basic que usa la automatización para controlar Microsoft Word, es posible que reciba uno de los siguientes mensajes de error:mensaje de error 1
Error en tiempo de ejecución '-2147023174 ' (800706ba) error de automatización
Mensaje de error 2
Error en tiempo de ejecución ' 462 ': el equipo servidor remoto no existe o no está disponible

Causa


Visual Basic ha establecido una referencia a Word debido a una línea de código que llama a un objeto, método o propiedad de Word sin cualificarlo con una variable de objeto de Word. Visual Basic no libera esta referencia hasta que finalice el programa. Esta referencia errante interfiere con el código de automatización cuando el código se ejecuta más de una vez.

Resolución


Modifique el código para que cada llamada a un objeto, método o propiedad de Word se califique con la variable de objeto adecuada.

Estado


Este comportamiento es una característica del diseño de la aplicación.

Más información


Para automatizar Word, establezca una variable de objeto que normalmente hace referencia al objeto Application o Document de Word. Después, se pueden establecer otras variables de objeto para hacer referencia a una selección, un rango u otros objetos en el modelo de objetos de Word. Cuando escribe código para usar un objeto, método o propiedad de Word, siempre debe preceder la llamada con la variable de objeto adecuada. Si no lo hace, Visual Basic usa una referencia de variable global oculta que establece en la instancia que se está ejecutando actualmente. Si Word está apagado o si la variable de objeto declarada está liberada, la variable global oculta ahora hará referencia a un objeto no válido (destruido). Al volver a ejecutar el código de automatización, las llamadas a esta variable de objeto oculta no funcionarán con el error mencionado. En los pasos siguientes se muestra cómo reproducir este problema y cómo corregirlo.

Pasos para reproducir el comportamiento

  1. Inicie un nuevo proyecto EXE estándar en Visual Basic. Se creará Form1 de forma predeterminada.
  2. Haga clic en referencias en el menú proyecto y, a continuación, haga clic en una de las siguientes opciones:
    • Para Office Word 2007, haga clic en biblioteca de objetos de Microsoft word 12,0
    • Para Word 2003, haga clic en biblioteca de objetos de Microsoft Word 11,0
    • Para Word 2003, haga clic en biblioteca de objetos de Microsoft Word 10,0
    • Para Word 2000, haga clic en biblioteca de objetos de Microsoft Word 9,0.
    • Para Word 97, haga clic en biblioteca de objetos de Microsoft Word 8,0.
  3. Coloque un control CommandButton en Form1.
  4. Copie el código siguiente en la ventana de código de 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. En el menú Ejecutar , haga clic en iniciar o presione la tecla F5 para iniciar el programa.
  6. Haga clic en CommandButton. No se produce ningún error. Sin embargo, se ha creado una referencia a Word y no se ha liberado.
  7. Haga clic de nuevo en el control CommandButton y observe que recibe el error descrito anteriormente.Nota El error se produce porque el código hace referencia al método InchesToPoints sin anteponer la llamada a la variable de objeto oWord.
  8. Detenga el proyecto y cambie la siguiente línea:
    .PageSetup.LeftMargin = InchesToPoints(1.25)
    desee
    .PageSetup.LeftMargin = oWord.InchesToPoints(1.25)
  9. Vuelva a ejecutar el programa. A continuación, haga clic en el CommandButton. No se produce ningún error.
  10. Haga clic de nuevo en el control CommandButton y observe que recibe el error.Nota El error se produce porque el código hace referencia al objeto Range de la sección ActiveDocument de la sección ActiveDocument sin preceder la llamada con la variable de objeto oWord.
  11. Detenga el proyecto y cambie la siguiente línea:
    Set oRange = ActiveDocument.Sections(1).Range
    desee
    Set oRange = oWord.ActiveDocument.Sections(1).Range
  12. Vuelva a ejecutar el programa. Tenga en cuenta que puede ejecutar el código varias veces sin errores.
Al crear un proyecto de Visual Basic automatizando Word, si su proyecto tiene una referencia a la biblioteca de objetos de Microsoft Word, el código de ejemplo de los objetos, métodos y propiedades del modelo de objetos de Word estará disponible en el archivo de ayuda de Word. Cuando el cursor se encuentra sobre una palabra clave en el código, verá el texto de ayuda correspondiente presionando la tecla F1. El código de ejemplo del tema de ayuda será el código de Visual Basic para aplicaciones de Microsoft Word. No se mostrarán las referencias de objeto que necesita el código de Visual Basic. Tendrá que agregar los calificadores según corresponda.

Referencias


Para obtener más información, consulte los artículos siguientes en Microsoft Knowledge Base:
178510 PRB: error en el método de automatización de Excel del objeto ' _Global '
167223 Archivo de ayuda de automatización de Microsoft Office 97
Para obtener información adicional sobre la automatización de las aplicaciones de Office, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
222101 HOWTO: buscar y usar documentación del modelo de objetos de Office