Se produce un error en Excel cuando se carga el complemento de automatización

Síntomas

Cuando Microsoft Excel carga un complemento de automatización durante el modo de edición de celdas, Excel falla. Este problema solo se produce con complementos de automatización que se han cargado a petición en Excel.

Causa

Este problema puede producirse cuando se carga un complemento, si el complemento muestra un formulario o un cuadro de diálogo, o si el complemento realiza una solicitud de automatización a Excel que intenta cambiar el estado de Excel. En la lista siguiente se incluyen ejemplos de solicitudes de automatización que pueden hacer que Excel falle cuando se llama mientras se carga un complemento de automatización durante el modo de edición de celdas:

  • Cambiar mediante programación la selección actual. Por ejemplo:

    Application.ActiveSheet.Range("A1").Select
    
    
  • Llamar a una propiedad o método de un elemento de la colección de Windows. Por ejemplo:

    Application.ActiveWindow.Zoom = 200
    
    
  • Cambie una configuración de Excel, como el modo de cálculo. Por ejemplo:

    Application.CalculationMode = xlManual
    
    

Todos estos elementos son ejemplos de intentos de código para modificar el entorno de Excel, un libro o una hoja de cálculo; Estos tipos de acciones no están permitidas en el modo de edición.

Resolución

No intente las acciones mencionadas anteriormente mientras se carga el complemento. Entre los métodos de complemento a los que se llama durante la carga se incluye el método Initialize y, si el complemento de automatización implementa la interfaz IDTExtensibility2, también los métodos OnConnection y OnStartupComplete.

Estado

Microsoft ha confirmado que se trata de un error de los productos de Microsoft que se enumeran al principio de este artículo.

Más información

Pasos para reproducir el problema

  1. Inicie un nuevo proyecto de DLL de ActiveX en Visual Basic.

  2. En el menú Proyecto, haga clic en Propiedades del Proyecto 1. Cambie el nombre del proyecto a TestAddIn y luego haga clic en Aceptar.

  3. Agregue el código siguiente al módulo de código para Class1:

    Private Sub Class_Initialize()
        MsgBox "Class_Initialize"
    End Sub
    
    
  4. Cree TestAddIn.dll.

  5. En Excel, inicie un libro nuevo.

  6. En Microsoft Office Excel 2003 o Microsoft Excel 2002, siga estos pasos:

    1. En el menú Herramientas , seleccione Complementos y haga clic en Automatización.
    2. En la lista, haga clic en TestAddIn.Class1 y, después, haga clic en Aceptar.
    3. En el cuadro de diálogo Complementos , haga clic en Aceptar.

    En Microsoft Office Excel 2007, siga estos pasos:

    1. Haga clic en el botón de Microsoft Office y luego en
      Opciones de Excel.
    2. Haga clic en la pestaña Complementos .
    3. En la lista Administrar , haga clic en Complementos de Excel y luego en Ir.
    4. En el cuadro de diálogo Complementos , haga clic en
      Automatización.
    5. En la lista, haga clic en TestAddin.Class1 y, después, haga clic en Aceptar.
    6. Haga clic en Aceptar.
  7. Escriba =a en cualquier celda. Aparecerá un cuadro de mensaje con el texto "Class_Initialize".

  8. Haga clic en Aceptar para descartar el cuadro de mensaje. Después de unos segundos, Excel falla.

Referencias

Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

291392 INFORMACIÓN: Complementos COM de Excel y complementos de automatización