Combinar personalizaciones de VBA y de nivel de documento

Actualización: noviembre 2007

Se aplica a

La información de este tema sólo se aplica a los proyectos de Visual Studio Tools para Office y versiones de Microsoft Office especificados.

Tipo de proyecto

  • Proyectos de nivel de documento

Versión de Microsoft Office

  • Microsoft Office System 2007

  • Microsoft Office 2003

Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto.

Puede utilizar código de Visual Basic para Aplicaciones (VBA) en un documento que forme parte de una personalización de nivel de documento de Visual Studio Tools para Office para Microsoft Office Word o Microsoft Office Excel. En todos los proyectos de nivel de documento, puede llamar a código de VBA del documento desde el ensamblado de personalización. En los proyectos de nivel de documento para 2007 Microsoft Office system, también puede configurar el proyecto para permitir que código de VBA del documento llame a código del ensamblado de personalización. Para obtener más información, vea Llamar a código de VBA en personalizaciones de nivel de documento.

Comportamiento del código de VBA en una personalización de nivel de documento

Al abrir su proyecto en Visual Studio, el documento se abre en modo de diseño. El código de VBA no se ejecuta cuando el documento está en modo de diseño, por lo que puede trabajar en el documento y en el código sin ejecutar el código de VBA.

Cuando ejecuta la solución, los controladores de eventos de VBA y del ensamblado de Visual Studio Tools para Office recogen los eventos provocados en el documento y se ejecutan ambos conjuntos de código. No es posible conocer de antemano qué código se ejecutará antes que el otro, por lo que deberá determinarlo probando cada caso en particular. Puede obtener resultados inesperados si no se coordinan y prueban cuidadosamente ambos conjuntos de código.

Llamar a código de VBA desde el ensamblado de personalización

Puede llamar a macros de documentos de Word y a macros y funciones de libros de Excel. Para ello, utilice uno de los métodos siguientes:

En cada método, el primer parámetro identifica el nombre de la macro o función a la que desea llamar y los parámetros opcionales restantes especifican los parámetros para pasar a la macro o función. El primer parámetro puede tener formatos diferentes para Word y Excel:

  • En Word, el primer parámetro es una cadena que puede ser cualquier combinación de nombre de plantilla, módulo y macro. Si especifica el nombre del documento, el código sólo podrá ejecutar las macros de documentos relacionados con el contexto actual. no simplemente cualquier macro en cualquier documento.

  • En Excel, el primer parámetro puede ser una cadena que especifica el nombre de la macro, Range que indica dónde se encuentra la función o un identificador de registro de una función DLL registrada (XLL). Si pasa una cadena, ésta se evaluará en el contexto de la hoja activa.

En el ejemplo de código siguiente se muestra cómo llamar a una macro denominada MyMacro desde un proyecto de nivel de documento para Excel. Este ejemplo supone que MyMacro está definida en Sheet1.

Globals.Sheet1.Application.Run("MyMacro")
Globals.Sheet1.Application.Run("MyMacro", missing, missing, missing,
    missing, missing, missing, missing, missing, missing, missing,
    missing, missing, missing, missing, missing, missing, missing,
    missing, missing, missing, missing, missing, missing, missing, 
    missing, missing, missing, missing, missing, missing);
Nota:

Para obtener información sobre cómo utilizar la variable missing global en lugar de los parámetros opcionales en Visual C#, vea Programar con Visual Basic frente a C#.

Vea también

Tareas

Cómo: Exponer código a VBA en un proyecto de Visual Basic

Cómo: Exponer código a VBA en un proyecto de Visual C#

Tutorial: Llamar a código de VBA en un proyecto de Visual Basic

Tutorial: Llamar a código de VBA en un proyecto de Visual C#

Conceptos

Llamar a código de VBA en personalizaciones de nivel de documento

Crear soluciones de Office en Visual Studio

Comparación de soluciones de VBA y Visual Studio Tools para Office

Información general sobre los ensamblados en las soluciones de Office