Compartir a través de


Solucionar problemas de Visual Studio en tiempo de diseño

Actualización: noviembre 2007

Los problemas siguientes podrían aparecer al desarrollar soluciones mediante Visual Studio Tools para Office.

Al guardar una solución y ejecutarla a continuación se produce un error

Visual Studio almacena las soluciones en una carpeta temporal hasta que se guardan. Visual Studio Tools para Office cambia automáticamente la directiva de seguridad para confiar en la solución que se encuentra en la ubicación temporal. Estos cambios se realizan cuando se genera la solución. Si no se realiza ningún cambio en la solución antes de guardarla en una carpeta permanente, Visual Studio no genera la solución cuando la ejecute otra vez desde la nueva ubicación. Por consiguiente, la solución no se convierte automáticamente en una solución de confianza en la nueva ubicación y no se ejecuta.

Si obtiene un error después de guardar una solución nueva en una ubicación permanente, abra el menú Generar y, a continuación, haga clic en Volver a generar solución. De este modo, Visual Studio genera la solución aunque no se haya efectuado ningún cambio en ella. A continuación, Visual Studio Tools para Office realiza los cambios pertinentes en la directiva de seguridad con arreglo a la nueva ubicación.

No se puede generar un proyecto de nivel de documento que está basado en un documento con permisos restringidos

Visual Studio Tools para Office no puede generar 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 aparecerá el siguiente mensaje en la ventana Lista de errores:

No se pudo agregar la personalización.

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

Algunos eventos no se desencadenan al utilizar C#

Los objetos de Office que tienen un método y un evento con el mismo nombre se han dividido en dos objetos en los ensamblados de interoperabilidad primarios de Office: un objeto central con todas las propiedades y métodos y un objeto de evento que contiene eventos con nombres que crean conflictos con una propiedad o métodos. Estos objetos de evento utilizan la convención de nomenclatura <objectname> _Event. Si no ve el evento que espera, haga la conversión a la interfaz <objectname>_Event.

Por ejemplo, hay un evento ActivateEvent y un método Activate para Workbook. Para controlar este evento, utilice WorkbookEvents_Event en lugar de Workbook.

Cree las variables miembro en la sección de declaraciones:

private Excel.Workbook wkbk;
private Excel.WorkbookEvents_Event wbEvents;
private Excel.WorkbookEvents_ActivateEventHandler activateEvent;

Conecte el evento en _Startup:

wbEvents = (Excel.WorkbookEvents_Event)wkbk;
activateEvent = new Excel.WorkbookEvents_ActivateEventHandler(ThisWorkbook_Activate);
wbEvents.Activate += activateEvent;

Escriba un controlador de eventos:

private void ThisWorkbook_Activate()
{
    // Your code goes here.
} 

Debe hacer la conversión a WorkbookEvents_Event porque Excel.Workbook.Activate devuelve el método Activate y no el evento ActivateEvent.

Como alternativa, puede convertir el objeto a su interfaz de eventos correspondiente en Startup:

((Excel.WorkbookEvents_Event)(Globals.ThisWorkbook.InnerObject)).Activate += 
    new Excel.WorkbookEvents_ActivateEventHandler(ThisWorkbook_Activate); 

A continuación, escriba un controlador de eventos para el código:

private void ThisWorkbook_Activate()
{
    // Your code goes here.
} 

No se reconocen referencias a 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 esta razón, la instrucción Imports/using situada en la parte superior de las plantillas de proyecto incluye una constante calificadora de método sencillo, por ejemplo:

Imports Word = Microsoft.Office.Interop.Word
using Word = Microsoft.Office.Interop.Word;

Esta utilización de la instrucción Imports/using requiere distinguir las referencias a las clases de Office con el calificador Word o Excel, por ejemplo:

Dim doc As Word.Document
Word.Document doc;

Si utiliza una declaración no calificada, obtendrá errores, como por ejemplo:

Dim doc As Document  ' Class is ambiguous
Document doc;  // Class is ambiguous

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

Se pierden las propiedades del control al crear un nuevo proyecto basado en un documento de un proyecto existente

Si crea un nuevo proyecto de Visual Studio Tools para Office basado en un documento de un proyecto existente, las propiedades de los controles que haya en el documento no se copian en el proyecto nuevo. Debe restablecer manualmente las propiedades de cualquier control preexistente. De forma alternativa, puede conservar las propiedades del control creando una copia del proyecto existente en vez de crear un proyecto nuevo, o cargando el proyecto existente en una solución nueva (en el diseñador) y copiando y pegando los controles del documento existente en el documento nuevo.

Los controles aparecen como rectángulos negros en el documento u hoja de cálculo

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

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, los controles de la plantilla que no están alineados con el texto podría no estar visibles. Esto se debe a que Visual Studio abre las plantillas de Word en la vista Normal. Para ver los controles, haga clic en el menú Ver, seleccione Vista de Microsoft Office Word y haga clic en Diseño de impresión.

Los nombres de conjuntos de datos de Visual Basic almacenados en memoria caché no aparecen correctamente en la caché

Los objetos DataSet creados mediante Visual Basic que están marcados como Cached y WithEvents (incluidos los objetos DataSet arrastrados desde la ventana Orígenes de datos o Cuadro de herramientas cuya propiedad CacheInDocument tiene el valor True) vienen precedidos por un carácter de subrayado en la memoria caché. Por ejemplo, si crea un DataSet y lo denomina Clientes, el nombre del objeto CachedDataItem será _Clientes en la memoria caché. Cuando utiliza ServerDocument para obtener acceso a este elemento almacenado en memoria caché, tendrá que especificar _Clientes en lugar de Clientes.

Se producen errores de compilación si el nombre de un proyecto de Microsoft Office 2003 es Excel o Word

Excel y Word son palabras clave reservadas en los proyectos de Office.

Se producen errores del compilador después de eliminar un control NamedRange

Si elimina un control NamedRange de una hoja de cálculo que no está activa en el diseñador, el código generado automáticamente podría no quitarse del proyecto y se podrían producir errores del compilador. Para asegurarse de que se quite el código, siempre debe seleccionar la hoja de cálculo que contiene el control NamedRange para que sea la hoja activa antes de eliminar el control. Si el código generado automáticamente no se elimina cuando quita el control, puede hacer que el diseñador elimine el código activando la hoja de cálculo y realizando un cambio de modo que la hoja quede marcada como modificada. Cuando vuelva a generar el proyecto, se habrá quitado el código.

Una ruta HTTP al ensamblado no funciona

Estas son las dos posibilidades principales:

  • El Asistente para proyectos de Visual Studio Tools para Office no modifica la directiva de seguridad para los ensamblados creados en ubicaciones HTTP. Debe otorgar manualmente plena confianza al ensamblado. Para obtener más información, consulte Cómo: Conceder permisos a carpetas y ensamblados (2003 System).

  • ASP.NET deshabilita la descarga de bibliotecas DLL de forma predeterminada. Para poder descargar ensamblados al usuario, el administrador del servidor Web debe cambiar las propiedades de Internet Information Services (IIS) para que las bibliotecas DLL se puedan descargar desde el directorio donde se guarda el ensamblado. Para obtener más información, vea la Ayuda de Internet Information Services (IIS), en la dirección https://localhost/iisHelp/ del servidor Web.

    Para ver si éste es el problema, puede comprobar si el registro del servidor Web contiene peticiones denegadas a la DLL. Si la causa es aparentemente otra, configure el depurador para que se interrumpa en todas las excepciones y compruebe los mensajes de error producidos.

Proyectos creados en ubicaciones de red UNC no modifican automáticamente la directiva de seguridad

El Asistente para proyectos de Visual Studio Tools para Office modifica la directiva de seguridad en el nivel de usuario. Si crea un proyecto en una ubicación de red UNC, debe modificar la directiva de seguridad en el nivel de equipo de modo que se otorgue al ensamblado plena confianza para poder ejecutarlo. Los cambios de la directiva en el nivel de equipo deben efectuarse manualmente. Para obtener más información, consulte Cómo: Conceder permisos a carpetas y ensamblados (2003 System).

No se produce un evento DocumentChange al abrir el documento

El evento DocumentChange se provoca siempre que cambia el documento activo. También suele producirse cuando se abre un documento. No obstante, dado que Word puede seguir varios métodos para abrir los documentos (por ejemplo, desde la línea de comandos, desde Windows Explorer o desde el menú Archivo), el evento DocumentChange no se produce siempre al abrir el documento. Una vez abierto, siempre debe producirse al cambiar el documento activo. Si desea ejecutar acciones después de abrir el documento, use el evento Startup.

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

Visual Studio Tools para Office sigue una convención de nomenclatura de los subprocesos que permite al depurador cerrar correctamente el programa. Si crea subprocesos en la solución, debería denominar cada subproceso con el prefijo VSTA_ para asegurar que estos subprocesos se controlan de forma correcta al detener la depuración. Por ejemplo, podría establecer la propiedad Name de un subproceso que espera a un evento de red en VSTA_NetworkListener.

Los eventos de Excel se desencadenan en Internet Explorer de manera diferente que en Excel

Los eventos se provocan en un orden diferente si un libro se aloja dentro de Internet Explorer que si el libro se abre en Excel. Además, algunos de los eventos se provocan dos veces. Si la solución incluye Internet Explorer, compruebe cómo la diferente secuencia de eventos afecta al funcionamiento de la solución.

No se produce un evento New cuando se crea un documento a partir de una plantilla

Cuando utilice un símbolo del sistema para abrir una plantilla de Word y crear un documento nuevo, debe utilizar el modificador /z para provocar el evento New. No incluya espacios detrás de /z, o Word abrirá la plantilla para su modificación en lugar de crear un nuevo documento a partir de la plantilla. Por ejemplo: winword.exe /z"mytemplate.dot".

Es similar al uso del modificador /t, pero /z produce además el evento New.

No se produce un evento Open al abrir una hoja de cálculo XML

Si un proyecto de Excel está basado en una hoja de cálculo no nativa existente (por ejemplo, en formato Excel XML), no se producirá el evento Open al abrir la hoja de cálculo.

El método BeforeClose se ejecuta, pero el usuario mantiene el libro abierto

Puede ocurrir que un usuario final cancele la operación de cerrar un libro y siga utilizando la solución después de haber llamado al controlador de eventos BeforeClose. Esto sucede si el usuario modifica el libro y después decide cerrarlo sin guardar los cambios. En este caso, se llama controlador de eventos BeforeClose y se muestra al usuario un cuadro de diálogo con la opción de cancelar la operación de cierre.

Si agrega al controlador de eventos BeforeClose código que cierra las conexiones de base de datos o que ejecuta otras acciones de limpieza, se puede llamar a este código mientras el usuario sigue trabajando con la solución.

El comando Insertar imagen prediseñada no hace nada en el diseñador de Visual Studio

El panel de tareas Imágenes prediseñadas no se abre abriendo el menú Insertar, señalando a Imagen y haciendo clic en Imágenes prediseñadas cuando está abierto Excel o Word en el diseñador de Visual Studio. Para agregar imágenes prediseñadas utilizando los comandos del menú, debe abrir la copia del libro o documento que está en la carpeta principal del proyecto (no la copia que está en la carpeta \bin) fuera de Visual Studio, agregue las imágenes prediseñadas y a continuación guarde el libro o documento.

No se puede crear un proyecto de nivel de documento 2003 aunque esté instalado Office 2003

Este problema se puede producir si desinstala 2007 Microsoft Office system y, a continuación, instala Office 2003. Puede recibir el mensaje de error siguiente al crear un proyecto de personalización de nivel de documento 2003:

"No hay instalada una versión de Microsoft Office compatible en este equipo."

Para resolver este problema:

  1. Cierre Visual Studio.

  2. Abra la aplicación adecuada de Microsoft Office y, a continuación, ciérrela. Por ejemplo, si desea crear un proyecto de libro de Excel 2003, abra Excel 2003 y ciérrelo a continuación.

  3. Inicie Visual Studio y cree el proyecto.

Los libros de Excel se deshabilitan cuando se abre un proyecto de personalización de nivel de documento de Excel en Visual Studio

Al abrir Excel 2007 y crear a continuación un proyecto de personalización de nivel de documento de Excel 2007 en Visual Studio, el libro que se abrió en primer lugar deja de responder.

Para resolver este problema, haga clic en la hoja de cálculo que está visible en el diseñador de Visual Studio. El libro que se abrió primero empieza a funcionar.

Vea también

Tareas

Cómo: Implementar el uso sin conexión de documentos (2003 System)

Solucionar problemas de Office en tiempo de ejecución

Conceptos

Implementación segura (2003 System)

Tareas comunes en la programación de Office

Otros recursos

Solución de problemas de soluciones de Office