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

Mientras se ejecuta el código que usa Automation para controlar Microsoft Excel, puede producirse uno de los siguientes errores:

En Microsoft Excel 97 y en versiones posteriores de Excel, recibe uno de los siguientes mensajes de error:

Mensaje de error 1

Error en tiempo de ejecución '1004':
Error en el método '<nombre del método>' del objeto '_Global'

Mensaje de error 2

Error definido por aplicaciones o definido por objetos

En Microsoft Excel 95, recibe uno de los siguientes mensajes de error:

Mensaje de error 1

Error '-2147023174'
en tiempo de ejecución Error de automatización OLE

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 Excel debido a una línea de código que llama a un objeto, método o propiedad de Excel sin calificar el elemento con una variable de objeto de Excel. 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

Para resolver este problema, modifique el código para que cada llamada a un objeto, método o propiedad de Excel 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 Microsoft Excel, establezca una variable de objeto que normalmente haga referencia al objeto Application de Excel o al objeto Libro de Excel. A continuación, se pueden establecer otras variables de objeto para hacer referencia a una hoja de cálculo, un rango u otros objetos en el modelo de objetos de Microsoft Excel. Al escribir código para usar un objeto, método o propiedad de Excel, siempre debe preceder la llamada con la variable de objeto adecuada. Si no lo hace, Visual Basic establece su propia referencia a Excel. Esta referencia puede causar problemas al intentar ejecutar el código de automatización varias veces. Tenga en cuenta que incluso si la línea de código comienza con la variable de objeto, se puede realizar una llamada a un objeto, método o propiedad de Excel en medio de la línea de código que no está precedida de una variable de objeto.

En los pasos siguientes se muestra cómo reproducir este problema y cómo corregirlo.

Pasos para reproducir este comportamiento

  1. Inicie un nuevo proyecto EXE estándar en Visual Basic. El formulario1 se crea de forma predeterminada.

  2. En el menú Proyecto , haga clic en Referencias y, a continuación, compruebe en la Biblioteca de objetos la versión de Excel que desea automatizar.

  3. Coloque un control CommandButton en Form1.

  4. Copie el ejemplo de código siguiente en la ventana Código de Formulario1.

          Option Explicit
    
          Private Sub Command1_Click()
             Dim xlApp As Excel.Application
             Dim xlBook As Excel.Workbook
             Dim xlSheet As Excel.Worksheet
             Set xlApp = CreateObject("Excel.Application")
             Set xlBook = xlApp.Workbooks.Add
             Set xlSheet = xlBook.Worksheets("Sheet1")
             xlSheet.Range(Cells(1, 1), Cells(10, 2)).Value = "Hello"
             xlBook.Saved = True
             Set xlSheet = Nothing
             Set xlBook = Nothing
             xlApp.Quit
             Set xlApp = Nothing
          End Sub
    
  5. En el menú Ejecutar , haga clic en Inicio o presione F5 para iniciar el programa.

  6. Haga clic en el control CommandButton . No se produce ningún error. Sin embargo, se ha creado una referencia a Excel y no se ha publicado.

  7. Vuelva a hacer clic en el control CommandButton . Observe que recibe uno de los mensajes de error que se analizan en la sección "Síntomas".

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

  8. Detenga el proyecto y cambie la siguiente línea de código:

    xlSheet.Range(Cells(1,1),Cells(10,2)).Value = "Hello"
    

    Cambie la línea de código para que se parezca a la siguiente línea de código.

    xlSheet.Range(xlSheet.Cells(1,1),xlSheet.Cells(10,2)).Value = "Hello"
    
  9. Ejecute el programa de nuevo. Tenga en cuenta que puede ejecutar el código varias veces sin recibir un mensaje de error.

Referencias

189618 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 Automation para controlar Word
 

¿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!

×