Solución de problemas en soluciones de Office

              Aplicable a: Visual Studio

En este artículo se presenta cómo solucionar problemas que puede encontrar al realizar diferentes tareas al desarrollar soluciones de Office en Visual Studio。

Problemas al crear, actualizar y abrir proyectos

Es posible que se produzcan los siguientes problemas al crear o abrir proyectos de Office.

Problema 1: No se puede crear el proyecto

Si se produce un error al intentar crear o abrir un proyecto de Office, pero Visual Studio no tiene suficiente información para determinar la causa, intente cerrar el proyecto, salir de Visual Studio e iniciarse de nuevo.

Si intenta crear un proyecto de nivel de documento, es posible que otro documento con el mismo nombre que el documento del nuevo proyecto ya esté abierto en Excel o Word. Asegúrese de que todas las demás instancias de Excel o Word estén cerradas.

Problema 2: Las propiedades de control se pierden al crear un nuevo proyecto basado en un documento de un proyecto existente

Si crea un nuevo proyecto de Office basado en un documento de un proyecto existente, las propiedades de los controles que se encuentran en el documento no se copian en el nuevo proyecto. Restablezca manualmente las propiedades de los controles preexistentes. Como alternativa, puede conservar las propiedades de control mediante la creación de una copia del proyecto existente en lugar de crear un proyecto nuevo o cargando el proyecto existente en la nueva solución (en el diseñador) y copiando y pegando los controles del documento existente en el nuevo documento.

Problema 3: Errores al crear un proyecto de libro de Excel basado en un libro existente

Si crea un nuevo proyecto de libro de Excel basado en un libro existente, es posible que vea una combinación de los siguientes errores.

  • Desde Excel: "Advertencia de privacidad: este documento contiene macros, controles ActiveX, información del paquete de expansión XML o componentes web. Estos pueden incluir información personal que el Inspector de documentos no puede quitar".
  • Desde Visual Studio: "Designer no se pudo cargar correctamente".

Estos errores pueden producirse si intenta crear un proyecto basado en un libro que ha quitado su información personal mediante el Inspector de documentos. Para evitar este problema, realice los pasos siguientes antes de crear el proyecto:

  1. Abra el libro en Excel.
  2. En Excel, abra el Centro de confianza.
  3. En la pestaña Opciones de privacidad , desactive la casilla Quitar información personal de las propiedades del archivo al guardar .
  4. Guarde el libro y cierre Excel.

Problema 4: No se puede abrir un proyecto después de la migración

Después de migrar una solución de Office a Microsoft Office 2010, el proyecto no se puede abrir en un equipo de desarrollo con solo el sistema de Microsoft Office 2007 instalado. Es posible que vea los siguientes errores.

  • "Uno o varios proyectos de la solución no se cargaron correctamente. Consulte la ventana de salida para obtener más información."
  • "No se puede crear el proyecto porque la aplicación asociada a este tipo de proyecto no está instalada en este equipo. Debe instalar la aplicación de Microsoft Office asociada a este tipo de proyecto".

Para resolver este problema, edite el archivo .vbproj o .csproj . Para un proyecto de Word, reemplace por HostPackage="{763FDC83-64E5-4651-AC9B-28C4FEB985A1}"HostPackage="{6CE98B71-D55A-4305-87A8-0D6E368D9600}". Para un proyecto de Excel, reemplace por HostPackage="{B284B16A-C42C-4438-BDCD-B72F4AC43CFB}"HostPackage="{825100CF-0BA7-47EA-A084-DCF3308DAF74}". Para un proyecto de Outlook, reemplace por HostPackage="{D2B20FF5-A6E5-47E1-90E8-463C6860CB05}"HostPackage="{20A848B8-E01F-4801-962E-25DB0FF57389}".

Como alternativa, asegúrese de que los proyectos migrados solo se abran en equipos de desarrollo con Microsoft Office 2010 ya instalado.

Problema 5: Errores en proyectos actualizados de nivel de documento de Office 2003 que contienen controles de Windows Forms

Si actualiza un proyecto de nivel de documento de Microsoft Office 2003 y el documento contiene controles Windows Forms, es posible que el proyecto actualizado tenga errores de compilación o en tiempo de ejecución. Para evitar este problema, instale Visual Studio 2005 Tools for Office Second Edition Runtime en el equipo de desarrollo antes de actualizar el proyecto. Esta versión del runtime está disponible como un paquete redistribuible del Centro de descarga de Microsoft en Microsoft Visual Studio 2005 Tools for Office Second Edition Runtime (VSTO 2005 SE) (x86).

Después de finalizar la actualización del proyecto, puede desinstalar Visual Studio 2005 Tools for Office Second Edition Runtime del equipo de desarrollo si no lo usa ninguna otra solución de Office.

Problemas al usar los diseñadores

Es posible que encuentre los siguientes problemas al trabajar con el diseñador de documentos, libros o hojas de cálculo en proyectos de nivel de documento.

Problema 1: Designer no se pudo cargar correctamente

Visual Studio no puede abrir el diseñador en los casos siguientes:

  • Excel o Word ya está abierto y muestra un cuadro de diálogo modal. Para abrir el diseñador, compruebe si Excel o Word tiene abierto un cuadro de diálogo modal y cierre los cuadros de diálogo modales abiertos. Si no hay ningún cuadro de diálogo modal abierto, es posible que haya alguna otra acción necesaria antes de que Excel o Word responda.
  • El proyecto se está depurando actualmente. Para abrir el diseñador, detenga o finalice la depuración.
  • Un complemento VSTO de Excel que está instalado en el equipo de desarrollo muestra un cuadro de diálogo cuando se inicia Excel. Para crear un proyecto de nivel de documento de Excel, primero debe deshabilitar el complemento VSTO.

Problema 2: Los controles aparecen como rectángulos negros en el documento o hoja de cálculo

Si agrupa controles en un documento o hoja de cálculo, Visual Studio ya no reconoce los controles. No se puede acceder a los controles agrupados en la ventana Propiedades y aparecen como rectángulos negros en el documento o hoja de cálculo. Debe desagrupar los controles para restaurar su funcionalidad.

Problema 3: Los controles de una plantilla de Word no están visibles en Visual Studio

Si abre una plantilla de Word en el diseñador de Visual Studio, es posible que los controles de la plantilla que no estén en línea con el texto no estén visibles. Esto se debe a que Visual Studio abre Word plantillas en la vista Normal. Para ver los controles, seleccione el menú Ver, seleccione Microsoft Office Word Ver y, a continuación, seleccione Diseño de impresión.

Problema 4: El comando Insertar imágenes prediseñadas no hace nada en el diseñador de Visual Studio

Cuando Excel o Word está abierto en el diseñador de Visual Studio, al hacer clic en el botón Clip Art de la pestaña Ilustraciones de la cinta de opciones no se abre el panel de tareas Imágenes prediseñadas. Para agregar imágenes prediseñadas, debe abrir la copia del libro o documento que se encuentra en la carpeta principal del proyecto (no la copia que se encuentra en la carpeta \bin ) fuera de Visual Studio, agregar la imagen prediseñada y, a continuación, guardar el libro o documento.

Problemas al escribir código

Es posible que encuentre los siguientes problemas al escribir código en proyectos de Office.

Problema 1: Algunos eventos de objetos de Office no son accesibles cuando se usa C#

En algunos casos, es posible que vea un error del compilador como el siguiente al intentar acceder a un evento determinado de una instancia de un tipo de ensamblado de interoperabilidad principal (PIA) de Office en un proyecto de Visual C#.

Ambigüedad entre "Microsoft.Office.Interop.Excel._Application.NewWorkbook" y "Microsoft.Office.Interop.Excel.AppEvents_Event.NewWorkbook"

Este error significa que está intentando acceder a un evento que tiene el mismo nombre que otra propiedad o método del objeto. Para tener acceso al evento, debe convertir el objeto a su interfaz de evento.

Los tipos de PIA de Office que tienen eventos implementan dos interfaces: una interfaz principal con todas las propiedades y métodos, y una interfaz de evento que contiene los eventos que expone el objeto. Estas interfaces de eventos usan la convención de nomenclatura _<objectname>Events<n>Event, como AppEvents_Event y ApplicationEvents2_Event. Si no puede acceder a un evento que espera encontrar en un objeto, convierta el objeto en su interfaz de evento.

Por ejemplo, Application los objetos tienen un NewWorkbook evento y una NewWorkbook propiedad . Para controlar el NewWorkbook evento, convierta en la ApplicationAppEvents_Event interfaz . En el ejemplo de código siguiente se muestra cómo hacerlo en un proyecto de nivel de documento para Excel.

private void ThisWorkbook_Startup(object sender, System.EventArgs e)
{
    ((Excel.AppEvents_Event)this.Application).NewWorkbook += 
        new Excel.AppEvents_NewWorkbookEventHandler(ThisWorkbook_NewWorkbook);
}

void ThisWorkbook_NewWorkbook(Excel.Workbook Wb)
{
    // Perform some work here.
}

Para obtener más información sobre las interfaces de eventos en los PIA de Office, vea Información general sobre las clases e interfaces en los ensamblados de interoperabilidad primarios de Office.

Problema 2: No se puede hacer referencia a clases PIA de Office en proyectos destinados a .NET Framework 4 o .NET Framework 4.5

En los proyectos que tienen como destino .NET Framework 4 o .NET Framework 4.5, el código que hace referencia a una clase definida en un PIA de Office no se compilará de forma predeterminada. Las clases de los PIA usan la convención <de nomenclatura objectname>Class, como DocumentClass y WorkbookClass. Por ejemplo, el código siguiente de un proyecto de complemento de VSTO de Word no se compilará.

Word.DocumentClass document = (Word.DocumentClass) Globals.ThisAddIn.Application.ActiveDocument;

Este código produce los siguientes errores de compilación:

  • Visual Basic: "No se permite la referencia a la clase 'DocumentClass' cuando su ensamblado está vinculado mediante el modo No-PIA".
  • Visual C#: "Tipo de interoperabilidad 'Microsoft.Office.Interop. Word. DocumentClass' no se puede incrustar. Use la interfaz aplicable en su lugar."

Para resolver este error, modifique el código para hacer referencia a la interfaz correspondiente en su lugar. Por ejemplo, en lugar de hacer referencia a un DocumentClass objeto, haga referencia a una instancia de la Document interfaz en su lugar.

Word.Document document = Globals.ThisAddIn.Application.ActiveDocument;

Los proyectos que tienen como destino .NET Framework 4 o .NET Framework 4.5 insertan automáticamente todos los tipos de interoperabilidad de los PIA de Office de forma predeterminada. Este error de compilación se produce porque la característica de tipos de interoperabilidad incrustados solo funciona con interfaces, no con clases. Para obtener más información sobre las interfaces y clases en los PIA de Office, vea Información general sobre las clases e interfaces en los ensamblados de interoperabilidad primarios de Office. Para obtener más información sobre la característica de tipos de interoperabilidad insertados en proyectos de Office, vea Diseño y creación de soluciones de Office.

Problema 3: No se reconocen las referencias a las clases de Office

Algunos nombres de clase, por ejemplo Application, están en varios espacios de nombres, como Microsoft.Office.Interop.Word y System.Windows.Forms. Por este motivo, la instrucción Imports/using de la parte superior de las plantillas de proyecto incluye una constante de calificación abreviada, por ejemplo:

using Word = Microsoft.Office.Interop.Word;

Este uso de la instrucción Imports/using requiere que se diferencien las referencias a las clases de Office con el calificador de Word o Excel, por ejemplo:

Word.Document doc;

Obtendrá errores si usa una declaración no calificada, por ejemplo:

Document doc;  // Class is ambiguous

Aunque haya importado el espacio de nombres Word o Excel y tenga acceso a todas las clases que contiene, debe calificar por completo todos los tipos con Word o Excel para quitar la ambigüedad del espacio de nombres.

Problemas al compilar proyectos

Es posible que se produzcan los siguientes problemas al compilar proyectos de Office.

Problema 1: No se puede crear un proyecto de nivel de documento basado en un documento con permisos restringidos

Visual Studio no puede compilar proyectos de nivel de documento si el documento tiene permisos restringidos. Si el proyecto contiene un documento con permisos restringidos, el proyecto no se compilará y recibirá el siguiente mensaje en la ventana Lista de errores .

No se pudo agregar la personalización.

Si desea incluir un documento con permisos restringidos, use un documento sin restricciones mientras desarrolla y compila la solución. A continuación, aplique los permisos restringidos al documento en la ubicación de publicación, después de publicar la solución.

Problema 2: Los errores del compilador se producen después de eliminar un control NamedRange

Si elimina un NamedRange control de una hoja de cálculo que no es la hoja de cálculo activa en el diseñador, es posible que el código generado automáticamente no se quite del proyecto y que se produzcan errores del compilador. Para asegurarse de que se quita el código, siempre debe seleccionar la hoja de cálculo que contiene el NamedRange control para que sea la hoja de cálculo activa antes de eliminar el control. Si el código generado automáticamente no se elimina al eliminar el control, puede hacer que el diseñador elimine el código activando la hoja de cálculo y realizando un cambio para que la hoja de cálculo se marque como modificada. Al volver a compilar el proyecto, se quita el código.

Problemas al depurar proyectos

Es posible que se produzcan los siguientes problemas al depurar proyectos de Office.

Problema 1: Aparece la solicitud de desinstalación al publicar e instalar una solución en el equipo de desarrollo

Al depurar una solución de Office, es posible que vea el siguiente error.

La personalización no se puede instalar porque otra versión está instalada actualmente y no se puede actualizar desde esta ubicación.

Este error indica que ha publicado e instalado previamente la solución de Office en el equipo de desarrollo. Para evitar que aparezca el mensaje, desinstale la solución de la lista de programas instalados en el equipo antes de depurar la solución. Como alternativa, puede crear otra cuenta de usuario en el equipo de desarrollo para probar la instalación de la solución publicada.

Problema 2: Los proyectos de nivel de documento creados en ubicaciones de red UNC no se ejecutan desde Visual Studio

Si crea un proyecto de nivel de documento para Excel o Word en una ubicación de red UNC, debe agregar la ubicación del documento a la lista de ubicaciones de confianza en Excel o Word. De lo contrario, la personalización no se cargará al intentar ejecutar o depurar el proyecto en Visual Studio. Para obtener más información sobre las ubicaciones de confianza, consulte Concesión de confianza a los documentos.

Problema 3: Los subprocesos no se detienen correctamente después de la depuración

Los proyectos de Office en Visual Studio siguen una convención de nomenclatura de subprocesos que permite al depurador cerrar el programa correctamente. Si crea subprocesos en la solución, debe asignar un nombre a cada subproceso con el prefijo VSTA_ para asegurarse de que estos subprocesos se controlan correctamente al detener la depuración. Por ejemplo, puede establecer la Name propiedad de un subproceso que espera a que VSTA_NetworkListener un evento de red.

Problema 4: No se puede ejecutar ni depurar ninguna solución de Office en el equipo de desarrollo

Si no puede ejecutar o desarrollar un proyecto de Office en el equipo de desarrollo, es posible que vea el siguiente mensaje de error.

No se pudo cargar la personalización porque no se pudo crear el dominio de aplicación.

Visual Studio usa Fusion, el cargador de ensamblados de .NET Framework, para almacenar en caché los ensamblados antes de cargar soluciones de Office. Asegúrese de que Visual Studio puede escribir en la memoria caché de Fusion e inténtelo de nuevo. Para obtener más información, vea Ensamblados de instantáneas.

Problema 5: Error al detener el depurador en un proyecto de nivel de documento después de usar Editar y continuar

Si usa Editar y continuar para realizar cambios en el código en un proyecto de nivel de documento para Excel o Word mientras el proyecto está en modo de interrupción, es posible que vea un cuadro de diálogo con el siguiente mensaje de error si, a continuación, detiene el depurador.

La terminación del proceso en su estado actual puede provocar resultados no deseados, incluida la pérdida de datos y la inestabilidad del sistema.

Tanto si selecciona como No en el cuadro de diálogo, Visual Studio finaliza el proceso de Excel o Word y detiene el depurador. Para detener la depuración del proyecto sin mostrar este cuadro de diálogo, salga de Excel o Word directamente en lugar de detener el depurador en Visual Studio.

Referencias