Iniciar sesión con Microsoft
Iniciar sesión o crear una cuenta
Hola:
Seleccione una cuenta diferente.
Tiene varias cuentas
Elija la cuenta con la que desea iniciar sesión.

Síntomas

Al ejecutar código de Microsoft Visual Basic que usa Automation para controlar Microsoft Word, es posible que reciba uno de los siguientes mensajes de error:

Mensaje de error 1

Error '-2147023174' en tiempo de ejecución (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 Word objeto, método o propiedad sin calificarlo con una variable de objeto de Word. Visual Basic no libera esta referencia hasta que finaliza el programa. Esta referencia errante interfiere con el código de automatización cuando el código se ejecuta más de una vez.

Solución

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

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 a la aplicación Word o al objeto Document. A continuación, se pueden establecer otras variables de objeto para hacer referencia a una selección, un rango u otros objetos en el modelo de objetos Word. Al escribir código para usar un Word objeto, método o propiedad, 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 en ejecución. Si Word se apaga o si se libera la variable de objeto declarada, 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 oculto producirán un error con el error anteriormente mencionado.


Los pasos siguientes muestran 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. El formulario1 se crea 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 CommandButton en Form1.

  4. Copie el código siguiente en la ventana Código del Formulario1:

          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 Inicio 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 publicado.

  7. Haga clic en commandbutton de nuevo y tenga en cuenta que recibe el error descrito anteriormente.

    Nota El error se produce porque el código hace referencia al método InchesToPoints sin precedir la llamada con la variable de objeto oWord.

  8. Detenga el proyecto y cambie la línea siguiente:

    .PageSetup.LeftMargin = InchesToPoints(1.25)
    

    -Para-

     

    .PageSetup.LeftMargin = oWord.InchesToPoints(1.25)
    
  9. Ejecute el programa de nuevo. A continuación, haga clic en el CommandButton. No se produce ningún error.

  10. Haga clic en commandbutton de nuevo y tenga en cuenta que recibe el error.

    Nota El error se produce porque el código hace referencia al objeto Range de la sección De ActiveDocument sin preceder la llamada con la variable de objeto oWord.

  11. Detenga el proyecto y cambie la línea siguiente:

    Set oRange = ActiveDocument.Sections(1).Range
    

    -Para-
     

    Set oRange = oWord.ActiveDocument.Sections(1).Range
    
  12. Ejecute el programa de nuevo. Tenga en cuenta que puede ejecutar el código varias veces sin errores.

Al crear un proyecto de Visual Basic automatizando Word, si el 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 está disponible desde el archivo de Ayuda de Word. Cuando el cursor está sobre una palabra clave del código, verás cualquier texto de ayuda aplicable presionando la tecla F1.


El código de ejemplo del tema de Ayuda será el código de Microsoft Word Visual Basic para Aplicaciones. No se mostrarán las referencias de objeto que el código de Visual Basic requiere. Deberá agregar los cualificadores según corresponda.

Referencias

Para obtener información adicional, consulte los siguientes artículos en Microsoft Knowledge Base:

178510 PRB: Error en el método de automatización de Excel del objeto "_Global"

Para obtener información adicional sobre la automatización de aplicaciones de Office, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

Word introducción al modelo de objetos

¿Necesita más ayuda?

¿Quiere más opciones?

Explore las ventajas de las suscripciones, examine los cursos de aprendizaje, aprenda a proteger su dispositivo y mucho más.

Las comunidades le ayudan a formular y responder preguntas, enviar comentarios y leer a expertos con conocimientos extensos.

¿Le ha sido útil esta información?

¿Cuál es tu grado de satisfacción con la calidad del lenguaje?
¿Qué ha afectado a su experiencia?
Si presiona Enviar, sus comentarios se usarán para mejorar los productos y servicios de Microsoft. El administrador de TI podrá recopilar estos datos. Declaración de privacidad.

¡Gracias por sus comentarios!

×