Uso de Call para ejecutar macros VBA (Microsoft Word)
Si bien es posible ejecutar una macro VBA desde otra macro utilizando el enfoque presentado en el consejo anterior, hay ocasiones en las que dicho enfoque simplemente no funciona. En su lugar, debe buscar una solución que permita un método a prueba de fallas para ejecutar una macro. Un enfoque es usar el comando Call en VBA. Sin embargo, antes de poder usar el comando, debe agregar una referencia de proyecto al proyecto de llamada. (Los proyectos son cómo VBA se refiere a la colección de módulos, formularios, etc. VBA en una plantilla. Por ejemplo, VBA se refiere a la plantilla Normal como el proyecto «Normal»
). Las referencias entre proyectos proporcionan una definición inequívoca vínculo entre un proyecto que llama y el proyecto que se va a llamar.
Por ejemplo, digamos que la macro MyMacro (la que quería ejecutar) era parte de la plantilla CoolDoc. Para usar Call correctamente en VBA, debe agregar una referencia al proyecto CoolDoc.dotm a la macro que llamará a MyMacro. Desafortunadamente, esto es un poco más fácil decirlo que hacerlo debido a un potencial «error» en VBA: Aparte del «Normal»
proyecto, VBA da a todos los proyectos de plantilla creados por el usuario el nombre de proyecto predeterminado de «TemplateProject». Esto puede crear problemas, ya que tener un nombre de proyecto único es mejor cuando se desea ser específico sobre la macro que se ejecutará. Para darle a CoolDoc.dotm un nombre de proyecto único, siga estos pasos:
-
Asegúrese de que la plantilla CoolDoc.dotm esté abierta.
-
Muestre el editor de VBA presionando Alt + F11.
-
En la ventana Proyecto en la parte superior izquierda del editor de VBA, haga clic derecho en la carpeta de la plantilla. Dado que CoolDoc es una plantilla, la carpeta se denomina TemplateProject (CoolDoc). Word muestra un menú contextual.
-
Elija la opción Propiedades de TemplateProject en el menú contextual.
Aparece el cuadro de diálogo Propiedades.
-
En el campo Nombre del proyecto, ingrese un nombre adecuado para su proyecto.
(CoolDoc sería un buen nombre, siempre que sea único).
-
Haga clic en Aceptar. El cuadro de diálogo desaparece y el proyecto cambia de nombre a CoolDoc.
Si expande todos los objetos en CoolDoc, debería ver uno o dos módulos en el proyecto. (Recuerde; las macros de VBA están contenidas en módulos). Por el bien de esta discusión, supongamos que MyMacro (el que desea ejecutar) está contenido dentro del módulo HotStuff del proyecto CoolDoc.
(Todos estos nombres de objetos se utilizarán en breve. En este punto, solo necesita anotar los nombres utilizados para su proyecto y el módulo con la macro).
Ahora está listo para agregar la referencia del proyecto CoolDoc al proyecto desde el que se llamará la macro. En este caso, supongamos que lo llamará desde una macro en el proyecto Normal. Puede agregar la referencia siguiendo estos pasos (asumiendo que el editor de VBA todavía está abierto):
-
En la ventana Proyecto en la parte superior izquierda del editor de VBA, seleccione la carpeta Normal.
-
Elija Referencias en el menú Herramientas. Se muestra el cuadro de diálogo Referencias. (Ver figura 1)
-
En la lista de referencias disponibles, busque CoolDoc.
-
Asegúrese de que la casilla de verificación a la izquierda de la opción CoolDoc esté seleccionada.
-
Haga clic en Aceptar.
Finalmente, está listo para agregar la instrucción Call a la macro desde la que desea llamar a MyMacro. La línea de comando aparecería de la siguiente manera:
Call CoolDoc.HotStuff.MyMacro
Esta línea de comando hace que VBA ejecute la macro deseada, sin ninguna posibilidad de ambigüedad. Sin embargo, hay algo importante que señalar.
Poner una referencia al proyecto CoolDoc en Normal hace que Normal cargue una copia de CoolDoc cada vez que se inicia Word, incluso si no hay documentos abiertos basados en la plantilla CoolDoc.dotm.
Esta carga de CoolDoc plantea una pregunta obvia: ¿Cuál es el punto, en VBA, de poner MyMacro en CoolDoc.dotm ya que no ahorrará tiempo de carga o uso de recursos? La respuesta corta es que no tiene ningún sentido, aparte de que CoolDoc.dotm posiblemente sea un lugar más obvio para colocar código que solo se relaciona con cosas en CoolDoc.dotm. (Todo este tema del diseño de proyectos sensatos es un tema demasiado grande para discutirlo en este único consejo).
_Nota: _
Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios WordTips), he preparado una página especial que incluye información útil.
link: / wordribbon-WordTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador]
.
WordTips es su fuente de formación rentable en Microsoft Word.
(Microsoft Word es el software de procesamiento de texto más popular del mundo). Este consejo (11412) se aplica a Microsoft Word 2007, 2010, 2013, 2016, 2019 y Word en Office 365. Puede encontrar una versión de este consejo para interfaz de menú anterior de Word aquí:
link: / word-Using_Call_to_Run_VBA_Macros [Usando la llamada para ejecutar macros VBA]
.