Solucionar problemas de Office en tiempo de ejecución
Actualización: noviembre 2007
Si, mientras crea una solución, aparecen mensajes de error de Microsoft Office o los usuarios finales notifican mensajes de error, puede deberse a alguno de los siguientes problemas comunes.
No se puede cargar Common Language Runtime o Microsoft .NET Framework
Este problema genera el siguiente mensaje de error:
<Aplicación> no pudo cargar Common Language Runtime. Póngase en contacto con el administrador para obtener más ayuda.
La versión de Microsoft .NET Framework instalada en el equipo del usuario final debe ser igual o posterior a la instalada en el equipo donde se desarrolló la solución. Para obtener más información sobre cómo instalar .NET Framework y Common Language Runtime, vea la página de descargas de Microsoft .NET Framework.
Las macros personalizadas requieren Common Language Runtime
Este problema genera el siguiente mensaje de error:
Las macros personalizadas de este documento requieren que se instale la versión 2.0 de Common Language Runtime. Póngase en contacto con el administrador para obtener más ayuda.
En este caso, las macros personalizadas significan el ensamblado administrado. El usuario final puede tener instalada una versión de Microsoft .NET Framework incompatible con la solución. Instale en el equipo del usuario una versión de Microsoft .NET Framework que sea igual o posterior a la instalada en el equipo donde se desarrolló la solución. La instalación puede coexistir con la versión existente. Para obtener más información sobre cómo instalar .NET Framework y Common Language Runtime, vea la página de descargas de Microsoft .NET Framework Downloads.
La directiva de seguridad no permite ejecutar el ensamblado
Este problema genera el siguiente mensaje de error:
La directiva de seguridad de .NET actual no permite ejecutar <ensamblado> desde la carpeta <ruta de acceso>. No cambie la directiva de seguridad de su equipo. El administrador o el programador que desarrolló las macros personalizadas controla la directiva de seguridad de .NET. No obstante, puede editar y guardar el documento. Póngase en contacto con el administrador o el autor de este documento para obtener más ayuda.
En este caso, las macros personalizadas significan el ensamblado administrado. El ensamblado no es de confianza y puede causar daños. Si tiene la certeza de que el ensamblado es seguro, otórguele plena confianza en la directiva de seguridad de .NET del usuario para que pueda ejecutarse. Para obtener más información, consulte Cómo: Conceder permisos a carpetas y ensamblados (2003 System).
La directiva de seguridad no permite que el documento cargue el ensamblado
Este problema genera el siguiente mensaje de error:
La directiva de seguridad de .NET actual no permite que <documento> cargue macros personalizadas. No cambie la directiva de seguridad de su equipo. El administrador o el programador que desarrolló las macros personalizadas controla la directiva de seguridad de .NET. No obstante, puede editar y guardar el documento. Póngase en contacto con el administrador o el autor de este documento para obtener más ayuda.
En este caso, las macros personalizadas significan el ensamblado administrado. Lo más probable es que el documento se haya abierto desde una ubicación que no es de confianza o desde un archivo adjunto de un mensaje de correo electrónico, y puede ser perjudicial. Si tiene la certeza de que el documento es seguro, guárdelo en el equipo del usuario y después ábralo. El documento se guardará en la zona Mi PC del equipo del usuario, que tiene plena confianza. Si el documento está en un archivo adjunto de un mensaje de correo electrónico, se guardará en la zona Internet, que no tiene plena confianza.
Otra posibilidad es que, anteriormente, el equipo tuviera instalada la versión correcta de Microsoft .NET Framework, pero que se desinstalara antes de ejecutar la solución. Si el usuario instala dos versiones de .NET Framework en paralelo y después quita una, aparecerá este mensaje de seguridad en lugar del mensaje que notifica que no está instalada la versión necesaria de .NET Framework. Para ejecutar la solución, debe instalar .NET Framework.
Para obtener más información, consulte Requisitos de seguridad para ejecutar las soluciones de Office (2003 System).
Aparece una excepción de seguridad cuando el ensamblado del proyecto es de plena confianza
Si recibe una excepción de seguridad cuando está seguro de que el ensamblado del proyecto principal es de plena confianza, podría deberse a que el ensamblado al que se hace referencia intenta llevar a cabo una acción para la cual no tiene los permisos necesarios. Debe otorgar manualmente todos los permisos necesarios a los ensamblados a los que se hace referencia.
Cuando un proyecto se genera en el equipo de un desarrollador, se otorgan los permisos de ejecución a todos los ensamblados de la carpeta de salida del proyecto a los que se hace referencia. Sólo se otorga plena confianza automáticamente al ensamblado del proyecto principal.
No se puede encontrar o cargar el ensamblado
Este problema genera el siguiente mensaje de error:
No se pudo encontrar o cargar el ensamblado de personalización. No obstante, puede editar y guardar el documento. Póngase en contacto con el administrador o el autor de este documento para obtener más ayuda.
Para resolver este error, pruebe las opciones siguientes:
Compruebe si el usuario tiene acceso a la ubicación del ensamblado y si el nombre del ensamblado existe. Para obtener más información, consulte Información general sobre los ensamblados en las soluciones de Office.
Si el ensamblado está disponible, compruebe si Word o Excel está ejecutando una personalización, como un complemento, una etiqueta inteligente o un documento inteligente, que haya cargado explícitamente una versión de Common Language Runtime de .NET Framework incompatible con el motor en tiempo de ejecución de Visual Studio Tools para Office. Para resolver el problema, deshabilite cualquier personalización que cargue explícitamente una versión de CLR de .NET Framework que no coincida con el motor en tiempo de ejecución que utiliza la solución.
Una aplicación en ejecución puede cargar sólo una instancia de CLR de .NET Framework. Si una personalización obliga a Word o Excel a cargar una versión anterior de CLR de .NET Framework, no se cargarán las soluciones de Visual Studio Tools para Office.
Compruebe si una excepción no controlada en el ensamblado de personalización impide que se cargue el ensamblado. Depure su solución con el depurador configurado para realizar interrupciones al producirse excepciones de Common Language Runtime o con la opción Interrumpir cuando las excepciones crucen AppDomain o los límites administrados o nativos activada en el cuadro de diálogo Opciones. Para obtener más información, vea Cómo: Controlar errores en proyectos de Office y General, Depuración, Opciones (Cuadro de diálogo).
El ensamblado no se puede inicializar
Este problema genera el siguiente mensaje de error:
Las macros personalizadas de <proyecto> no se pudieron inicializar correctamente. No obstante, puede editar y guardar el documento. Póngase en contacto con el administrador o el autor de este documento para obtener más ayuda.
En este caso, las macros personalizadas significan el ensamblado administrado.
Algunas de las razones por las que se produce este mensaje de error incluyen:
El ensamblado del proyecto principal de Office es de confianza parcial. Por ejemplo, si crea un proyecto en un recurso compartido de red que sólo tiene permisos de zona Intranet en la directiva de seguridad en el nivel de equipo, puede aparecer este mensaje aunque haya otorgado plena confianza en el nivel de usuario. El ensamblado se carga sin advertencias de seguridad pero, dado que la directiva en el nivel de equipo es más restrictiva, el ensamblado no tiene los permisos necesarios para obtener acceso al modelo de objetos de Office (que requiere plena confianza), por lo que el ensamblado no se inicializa. Si trabaja en un ensamblado que no está almacenado en el equipo local, un administrador de red debe concederle plena confianza en el nivel de equipo. Para obtener más información, consulte Requisitos de seguridad para ejecutar las soluciones de Office (2003 System).
El ensamblado de interoperabilidad primario requerido para un componente COM al que se hace referencia no está instalado en la caché de ensamblados global antes de agregar la referencia. Visual Studio genera un ensamblado de interoperabilidad que puede que no funcione perfectamente en todos los casos y lo coloca en el directorio del proyecto, en lugar de colocarlo en la caché de ensamblados global.
Para hacer referencia al ensamblado de interoperabilidad correcto
Busque todas las referencias del proyecto a componentes COM (por ejemplo, aplicaciones de Office) que tengan la propiedad Copia local establecida en True.
Haga clic con el botón secundario del mouse en la referencia y después seleccione Quitar en el menú de acceso directo.
Ejecute Agregar o quitar programas e instale el ensamblado de interoperabilidad primario para el componente en la caché de ensamblados global. Para obtener más información, consulte Cómo: Instalar ensamblados de interoperabilidad primario de Office.
Abra el proyecto en Visual Studio y agregue una nueva referencia al componente. Para obtener más información, vea Cómo: Apuntar a las aplicaciones de Office mediante los ensamblados de interoperabilidad primarios.
El ensamblado no se puede usar sin conexión
Esta situación genera el siguiente mensaje de error:
La macro personalizada de <ruta de acceso> no está disponible sin conexión. ¿Desea conectarse para descargar la personalización? Puede que esto afecte a otros programas que se estén ejecutando en el equipo, como Internet Explorer.
En este caso, la macro personalizada significa el ensamblado administrado. Este mensaje aparece si el equipo está en modo sin conexión y la caché no contiene una copia del ensamblado. Para trabajar sin conexión, deben cumplirse las siguientes condiciones:
El ensamblado debe encontrarse en un servidor Web.
El acceso al ensamblado debe realizarse desde una ruta HTTP o HTTPS en las propiedades personalizadas.
Para guardar en caché un ensamblado que satisfaga los criterios anteriores, debe conectarse y abrir el documento de Office para descargar una copia del ensamblado, por lo menos una vez. A continuación, puede utilizar el ensamblado para trabajar sin conexión. Para obtener más información, consulte Modelo sin conexión para soluciones de Office (2003 System) y Cómo: Implementar el uso sin conexión de documentos (2003 System).
Puede que otros programas resulten afectados, porque el modo con conexión o sin conexión es único para todo el equipo. Si elige Trabajar sin conexión en el menú Archivo de Internet Explorer, se desconectarán todas las aplicaciones.
El ensamblado no se puede usar con conexión
Esta situación genera el siguiente mensaje de error:
La macro personalizada de <ruta de acceso> no está disponible en línea, pero hay una copia local disponible. ¿Desea desconectarse y utilizar la copia almacenada en caché? Puede que esto afecte a otros programas que se estén ejecutando en el equipo, como Internet Explorer.
En este caso, la macro personalizada significa el ensamblado administrado. Este mensaje aparece si el equipo no está conectado a una red, o si la red está inactiva y el equipo está en modo con conexión. Al hacer clic en Aceptar, el equipo activa el modo sin conexión y utiliza la copia del ensamblado de la memoria caché. Debe establecer el modo sin conexión para poder utilizar un ensamblado almacenado en la caché, ya sea haciendo clic en Aceptar en este cuadro de diálogo o seleccionando Trabajar sin conexión en el menú Archivo de Internet Explorer. Para obtener más información, consulte Modelo sin conexión para soluciones de Office (2003 System) y Cómo: Implementar el uso sin conexión de documentos (2003 System).
Puede que otros programas resulten afectados, porque el modo con conexión o sin conexión es único para todo el equipo. Si habilita el modo sin conexión en el equipo, todas las aplicaciones trabajarán sin conexión.
No se puede cargar el ensamblado
Este problema genera el siguiente mensaje de error:
No se pudo cargar el tipo <Nombre de proyecto> del ensamblado <Nombre de ensamblado>.
Este mensaje podría aparecer si ofusca el código de la solución. Al ofuscar el código, se cambian los nombres de todas las clases. Sin embargo, se hace referencia a los nombres de clase originales en el manifiesto y el ofuscador no cambia el manifiesto.
Para evitar este error, agregue los nombres de la hoja de cálculo y las clases de libro a la lista del ofuscador de clases para no cambiar el nombre.
La configuración regional puede causar que algunos métodos de Excel devuelvan un error
Si el valor seleccionado en la configuración regional del usuario final no coincide con el idioma instalado para Microsoft Office Excel 2003, es posible que reciba los siguientes errores al llamar a determinados métodos y propiedades de Excel:
Excepción del tipo 'System.Runtime.InteropServices.COMException' en mscorlib.dll.
Información adicional: excepción de HRESULT: 0x800A03EC.
O bien
Excepción del tipo 'System.Runtime.InteropServices.COMException' en ExcelProject.dll.
Información adicional: formato antiguo o tipo de biblioteca no válida.
Para obtener detalles sobre cómo corregir este problema, vea Globalización y localización de las soluciones de Office.
El documento de Office se abre sin errores, pero el código no se ejecuta
Entre las razones por las que el código no se ejecuta y no aparece ningún mensaje de error se incluyen:
Los ensamblados de interoperabilidad primarios de Office no están instalados en la caché de ensamblados global, posiblemente debido a que .NET Framework no está instalado en el equipo, o bien a que los ensamblados están marcados con No disponible en la configuración de Office.
La versión de Word o Excel que se está utilizando no admite soluciones de Visual Studio Tools para Office. Los usuarios finales deben instalar Word y/o Excel de una edición de Microsoft Office 2003 que admita Visual Studio Tools para Office. Para obtener más información, vea Cómo: Instalar Visual Studio Tools para Office para programar para Microsoft Office 2003.
El documento se abre desde una ubicación HTTP o HTTPS y la opción Explorar en la misma ventana para los archivos .doc o .xls no está activada en el Explorador de Windows. Esta opción se utiliza en Internet Explorer para determinar si el documento está hospedado en la ventana actual o en una ventana independiente. Si el documento está hospedado en una ventana independiente, las personalizaciones no se cargan ni ejecutan. Si desea tener acceso a la opción Explorar en la misma ventana para un documento de Word o Excel, abra el Explorador de Windows, haga clic en el menú Herramientas y, a continuación, haga clic en Opciones de carpeta. En la ficha Tipos de archivo, seleccione DOC o XLS en la lista de tipos de archivo, haga clic en Avanzadas y compruebe que esté activada la opción Explorar en la misma ventana.
Se abre un proyecto de documento de Word en Visual Studio en el mismo equipo. Cierre Visual Studio y vuelva a abrir el documento.
Para obtener más información, consulte Depurar proyectos de nivel de documento.
La seguridad de macros está establecida en Alta, pero el código se ejecuta
Una solución de Microsoft Office 2003 creada con extensiones de código administrado se ejecuta aunque la Seguridad se haya establecido en Alta en la aplicación de Office del usuario final. Esto obedece a que el responsable de administrar la seguridad del código de ensamblado administrado es Microsoft .NET Framework, no Microsoft Office Word 2003 ni Microsoft Office Excel 2003. No obstante, hay varias formas de abrir un documento o un libro que contenga extensiones de código administrado sin ejecutar el código de ensamblado. Para obtener más información, consulte Cómo: Abrir soluciones de Office sin ejecutar código.
Excel y Word se cierran inesperadamente cuando se produce una excepción no controlada en un formulario no modal
Si Excel o Word se cierran inesperadamente cuando un usuario desencadena un evento en un formulario no modal, compruebe si hay algún lugar del código donde pudieran producirse excepciones no controladas. Agregue el control de errores para evitar la posible pérdida de datos.
Un complemento de Outlook no se carga o está deshabilitado
Hay varias posibilidades para comprobar si un complemento de Outlook se carga correctamente:
Si Microsoft Office Outlook se cierra inesperadamente o se produce un error cuando se está inicializando un complemento, Outlook podría deshabilitar el complemento. Para obtener más información, vea Cómo: Volver a habilitar un complemento que se ha deshabilitado.
Un complemento de Outlook no se puede cargar si el archivo de manifiesto del complemento no está almacenado en el mismo directorio que el ensamblado del complemento. Si implementa el archivo de manifiesto en un directorio diferente, es necesario actualizar el atributo codebase del elemento asmv2:installFrom en el archivo de manifiesto del complemento de modo que señale a la ubicación del ensamblado del complemento.
Es posible que Outlook esté ejecutando un complemento que cargó explícitamente una versión de Common Language Runtime (CLR) de .NET Framework que es incompatible con el motor en tiempo de ejecución de Visual Studio Tools para Office. Para resolver el problema, deshabilite los complementos que carguen explícitamente una versión incompatible de .NET Framework.
Una aplicación en ejecución sólo puede cargar una instancia de .NET Framework. Si un complemento obliga a Outlook a cargar una versión anterior de .NET Framework, los complementos creados mediante Visual Studio Tools para Office no se cargarán.
Puede obtener información adicional sobre la solución de problemas si establece variables de entorno de modo que Visual Studio Tools para Office muestre mensajes de error detallados y escriba todas las acciones en un archivo de registro. Para obtener más información, consulte Depurar proyectos de nivel de aplicación.
Un complemento de Outlook no se puede instalar mediante el cuadro de diálogo Complementos COM
No utilice el cuadro de diálogo Complementos COM para instalar complementos de Outlook creados mediante Visual Studio Tools para Office. Utilice el proyecto de implementación incluido en la plantilla de proyecto de Outlook. Los complementos de Outlook utilizan un archivo .dll de servidor proxy, denominado AddinLoader.dll, para extender la funcionalidad de Outlook. El servidor proxy permite al ensamblado administrado comunicarse con Outlook a través de COM. Para obtener más información, consulte Implementar complementos de nivel de aplicación (2003 System).
No se pueden agregar páginas de propiedades personalizadas en los complementos de Outlook
Si el complemento de Outlook crea una página de propiedades personalizadas para el cuadro de diálogo Opciones de Outlook o el cuadro de diálogo Propiedades de una carpeta de Outlook, es necesario hacer explícitamente que la página de propiedades personalizadas sea visible a través de COM (de manera predeterminada, el ensamblado no es visible a través de COM). De lo contrario, el complemento no podrá crear la página de propiedades personalizadas y podría producirse una COMException al depurar el complemento.
Hay dos maneras de hacer que una página de propiedades personalizadas sea visible a través de COM:
Agregue ComVisibleAttribute a la clase que implementa la página de propiedades personalizadas en el proyecto. Para obtener información sobre cómo aplicar los atributos a las clases, vea Aplicar atributos.
Utilice Visual Studio para hacer que todo el ensamblado del complemento sea visible a través de COM.
Para hacer el ensamblado del complemento visible a través de COM mediante Visual Studio
En Visual Studio, haga clic con el botón secundario en el proyecto en el Explorador de soluciones y, a continuación, haga clic en Propiedades.
Haga clic en la ficha Aplicación.
Haga clic en el botón Información de ensamblado.
Active la casilla Crear ensamblado visible a través de COM.
Haga clic en Aceptar.
El evento Quit no se desencadena nunca en los complementos de Outlook
Si crea un controlador de eventos para el evento Quit de la clase Microsoft.Office.Tools.Outlook.Application en un complemento de Outlook, el controlador de eventos no se ejecutará nunca. Cuando cierra una instancia de Outlook que está ejecutando un complemento creado mediante Visual Studio Tools para Office, dicho complemento se descarga antes de recibir el evento Quit. Como alternativa, puede colocar el código que desea ejecutar cuando Outlook se cierra en el controlador de eventos ThisAddIn_Shutdown del proyecto. Para obtener más información, vea Plantillas de proyecto de complemento de Microsoft Office 2007 y Plantillas de proyecto de complemento de Microsoft Office 2003.
El método Close hace que Word y Excel se cierren inesperadamente
Al llamar al método Close del objeto Workbook de Excel o del objeto Document de Word desde un formulario no modal, la aplicación podría cerrarse inesperadamente. Todos los documentos o libros abiertos se cerrarán y los datos podrían perderse. Si Microsoft Office Outlook utiliza Word como su editor de correo electrónico, todos los mensajes de correo electrónico abiertos también se podrían cerrar. También podría producirse lo mismo si muestra formularios Windows Forms o cuadros de mensaje mientras controla el evento AppDomain.DomainUnload.
Para evitar este problema, no llame al método Close desde un formulario no modal ni en un evento de un formulario no modal. En su lugar, use los siguientes procedimientos:
Utilice los formularios modales (por ejemplo utilizando ShowDialog en lugar de Show) si debe cerrar el documento desde el formulario.
Si necesita utilizar un formulario no modal, asegúrese de que dicho formulario está cerrado y de que las referencias al formulario se han destruido por completo antes de intentar cerrar el documento o el libro. El código siguiente muestra un ejemplo:
Dim form1 As SampleForm Sub OpenForm() form1 = New SampleForm form1.Show() ' Show the form modelessly. End Sub Sub ForceShutdown() ' Completely close the form if it is still running. ' Note that hiding the form might not work by itself. If (Not form1 Is Nothing) Then form1.Close() form1.Dispose() form1 = Nothing End If Me.Close() End Sub
SampleForm form1; private void OpenForm() { form1 = new SampleForm(); form1.Show(); // Show form modelessly. } private void ForceShutdown() { // Completely close the form if it is still running. // Note that hiding the form might not work by itself. if (form1 != null) { form1.Close(); form1.Dispose(); form1 = null; } object saveChanges = Word.WdSaveOptions.wdSaveChanges; this.Close(ref saveChanges, ref missing, ref missing); }
Para obtener información sobre cómo pasar el parámetro missing en C#, vea Descripción de los parámetros opcionales en las soluciones de Office.
Al establecer el parámetro Cancel del cuadro de diálogo Guardar como, se devuelven advertencias inexactas o Word se cierra inesperadamente
Si muestra el cuadro de diálogo Guardar como dentro del controlador de eventos DocumentBeforeSave de ThisDocument y establece el parámetro Cancel en false, la aplicación podría cerrarse inesperadamente. Si establece el parámetro Cancel en true, aparece un mensaje de error que indica que Autosave se ha deshabilitado.
Los controles de formularios Windows Forms se comportan de forma impredecible cuando la ventana de la hoja de cálculo de Excel está dividida
Si divide una ventana de una hoja de cálculo que contiene controles de formularios Windows Forms, los controles podrían comportarse de forma diferente en las dos ventanas. Por ejemplo, si ejecuta código para cambiar la propiedad BackColor de TextBox en una hoja de cálculo, el cambio podría aparecer sólo en una de las ventanas.
Se produce una InvalidCastException al pasar un control host de Excel a un método
Algunos métodos y propiedades de Excel requieren que se les pase un objeto de Office nativo. Si el atributo ExcelLocale1033Attribute se establece en false y se pasa un control host basado en el objeto de Office nativo, se inicia una InvalidCastException. Puede utilizar la propiedad InnerObject de controles host para pasar los objetos de Office nativo subyacente a estos métodos y propiedades. Para obtener más información acerca de los problemas de localización en Excel, vea Aplicar formato a datos de Excel con varias configuraciones regionales.
El enlace de datos de un ListObject no se realiza correctamente si se muestra un cuadro de diálogo modal
Si Excel muestra un cuadro de diálogo modal mientras se actualiza el conjunto de datos que está enlazado a ListObject, se producirá un error en el enlace de datos de ListObject. Cuando ListObject pierde el enlace de datos, se provoca el evento DataBindingFailure. Para enlazar de nuevo ListObject al origen de datos, controle el evento DataBindingFailure y llame al método SetDataBinding.
Hacer doble clic en el manifiesto de implementación genera un error
Si hace doble clic en un manifiesto de implementación, aparece el mensaje siguiente:
No se puede continuar. La aplicación tiene un formato incorrecto. Póngase en contacto con el proveedor de la aplicación para obtener ayuda.
A diferencia de la implementación de ClickOnce, una solución de Visual Studio Tools para Office no se puede ejecutar haciendo doble clic en el manifiesto de implementación. Para ejecutar la solución, abra la aplicación de Office. En el caso de Word y Excel, abra el documento de solución en la aplicación. Otra posibilidad es hacer doble clic en el archivo del documento.
Para obtener más información sobre cómo implementar soluciones de Visual Studio Tools para Office, vea Implementar personalizaciones de nivel de documento (2003 System) e Implementar complementos de nivel de aplicación (2003 System). Para obtener más información sobre los manifiestos de implementación, vea Manifiestos de implementación para soluciones de Office (2003 System).
Vea también
Tareas
Solucionar problemas de Visual Studio en tiempo de diseño
Conceptos
Tareas comunes en la programación de Office