Cómo ejecutar una macro desde una macro (desde otro libro)

Índice
  1. Ejecute una macro desde una macro en el mismo libro de trabajo
    1. Utilice el nombre de la macro
    2. Llamar a una macro
    3. ejecutar una macro
  2. Ejecutar una macro basada en una variable
  3. Ejecutar una macro contenida en otro libro de trabajo
    1. Ejecutar una macro contenida en otro libro de trabajo basada en una variable
  4. Llamar y ejecutar macros desde módulos de libro de trabajo, hoja de trabajo o formulario de usuario
  5. Conclusión

En VBA, hay varias formas de ejecutar una macro desde una macro, e incluso ejecutar una macro desde otro libro de trabajo. En los foros, estos métodos se usan indistintamente según las preferencias personales del comentarista. Esto puede generar confusión para cualquiera que intente aprender VBA. . Dependiendo del método para ejecutar/llamar la macro, la sintaxis es ligeramente diferente.

Esta publicación muestra estos métodos comunes para ejecutar una macro desde una macro y cómo usarlos.

Tabla de contenido
  • Ejecute una macro desde una macro en el mismo libro de trabajo
    • Utilice el nombre de la macro
    • Llamar a una macro
    • ejecutar una macro
  • Ejecutar una macro basada en una variable
  • Ejecutar una macro contenida en otro libro de trabajo
    • Ejecutar una macro contenida en otro libro de trabajo basada en una variable
  • Llamar y ejecutar macros desde módulos de libro de trabajo, hoja de trabajo o formulario de usuario
  • Conclusión

Ejecute una macro desde una macro en el mismo libro de trabajo

Hay tres métodos comunes para llamar a una macro contenida en el mismo libro.

  • Usando solo el nombre de la macro
  • Llamando a la macro
  • ejecutar una macro

Estos 3 métodos se detallan a continuación.

Utilice el nombre de la macro

En este ejemplo de código, solo se requiere el nombre de la macro.

Sub CallAnotherMacro()NameOfMacroEnd Sub

Cuando se utiliza este método con parámetros/argumentos, el primer argumento sigue al nombre de la macro, cada argumento posterior está separado por una coma.

Sub CallAnotherMacro()Dim argument1 As StringDim argument2 As Integerargument1 = "ExampleText"argument2 = 1NameOfMacro argument1, argument2End Sub

Llamar a una macro

Usar la declaración Call es mi método preferido. Es fácil de leer porque queda claro que se está ejecutando otra macro.

Sub CallAnotherMacro()Call NameOfMacroEnd Sub

Los parámetros utilizados con este método están entre paréntesis y separados por una coma.

Sub CallAnotherMacro()Dim argument1 As StringDim argument2 As Integerargument1 = "ExampleText"argument2 = 1Call NameOfMacro(argument1, argument2)End Sub

ejecutar una macro

El comando Ejecutar es similar a Llamar , pero requiere que el nombre de la macro tenga el formato de una cadena de texto.

Sub CallAnotherMacro()Run "NameOfMacro"End Sub

Para usar argumentos, la cadena de texto va seguida de una coma y cada argumento está separado por una coma.

Sub CallAnotherMacro()Dim argument1 As StringDim argument2 As Integerargument1 = "ExampleText"argument2 = 1Run "NameOfMacro", argument1, argument2End Sub

Como el nombre de la macro es una cadena de texto, puede tratarse como una variable. Por lo tanto, el código puede ejecutar diferentes macros según el escenario. Esto se detalla en la sección siguiente.

Ejecutar una macro basada en una variable

Es posible ejecutar una macro basada en el valor de una variable de cadena. Esto permite activar una macro diferente dependiendo del valor de la variable de cadena en ese punto.

En el siguiente ejemplo:

  • NameOfMacro es el nombre del procedimiento Sub (igual que en los ejemplos anteriores)
  • MacroName es una variable de cadena que contiene el texto "NameOfMacro"
Sub CallAnotherMacro()Dim MacroName As StringMacroName = "NameOfMacro"Run MacroNameEnd Sub

En el código anterior, el comando Ejecutar no va seguido de una cadena de texto, sino de una variable. La función Ejecutar funciona porque la variable es una cadena de texto.

Para utilizar parámetros utilizando este método, la sintaxis es la siguiente:

Sub CallAnotherMacro()Dim MacroName As StringDim argument1 As StringDim argument2 As IntegerMacroName = "NameOfMacro"argument1 = "ExampleText"argument2 = 1Run MacroName, argument1, argument2End Sub

Ejecutar una macro contenida en otro libro de trabajo

Nota: El libro que contiene la macro debe estar abierto. Si primero necesita abrir el libro de trabajo, consulte el código en esta publicación .

Para ejecutar una macro contenida en otro libro de trabajo, use el comando Application.Run de la siguiente manera:

Sub CallAnotherMacro()Application.Run "'Another Workbook.xlsm'!NameOfMacro"End Sub

Las comillas simples alrededor del nombre del libro son obligatorias cuando el nombre del libro contiene un espacio.

Si no hay espacios, las comillas simples son opcionales. El código seguirá ejecutándose correctamente si se incluyen. Prefiero usarlos para mantener la coherencia y reducir el riesgo si se cambia el código.

Sub CallAnotherMacro()Application.Run "AnotherWorkbook.xlsm!NameOfMacro"End Sub

Ejecutar una macro contenida en otro libro de trabajo basada en una variable

Usando la variable de cadena de texto, podemos crear el nombre del libro y la macro. Esto nos permite llamar a cualquier macro desde cualquier libro abierto.

Sub CallAnotherMacro()Dim WorkbookName As StringDim MacroName As StringWorkbookName = "AnotherWorkbook.xlsm"MacroName = "NameOfMacro"Run "'"  WorkbookName  "'!"  MacroNameEnd Sub

Si se utilizan parámetros, estos también se pueden incluir de la siguiente manera:

Sub CallAnotherMacro()Dim WorkbookName As StringDim MacroName As StringDim argument1 As StringDim argument2 As IntegerWorkbookName = "AnotherWorkbook.xlsm"MacroName = "NameOfMacro"argument1 = "ExampleText"argument2 = 1Run "'"  WorkbookName  "'!"  MacroName, argument1, argument2End Sub

Llamar y ejecutar macros desde módulos de libro de trabajo, hoja de trabajo o formulario de usuario

Todos los ejemplos anteriores suponen que el código VBA está almacenado dentro de un módulo estándar. Pero el código VBA también se puede guardar dentro de los módulos Libro de trabajo, Hoja de trabajo y Formulario de usuario. Para llamar a una macro desde uno de estos tipos de módulos, se requiere un pequeño ajuste; el nombre del objeto debe preceder al nombre de la macro.

Usando el mismo método Ejecutar que el anterior, para ejecutar una macro contenida dentro del Módulo de libro de trabajo, el código sería el siguiente:

Sub CallAnotherMacro()Run "ThisWorkbook.NameOfMacro"End Sub

Observe que NameOfMacro ahora se ha convertido en ThisWorkbook.NameOfMacro .

Si el código VBA está contenido dentro del Módulo de libro de otro libro, el código se ajustaría de la siguiente manera:

Sub CallAnotherMacro()Run "'AnotherWorkbook.xlsm'!ThisWorkbook.NameOfMacro"End Sub

Utilice el nombre del código del objeto para hacer referencia a un módulo de hoja de trabajo o un módulo de formulario de usuario.

Conclusión

Hay muchas formas de ejecutar una macro desde una macro. La variedad de métodos puede causar mucha confusión ya que diferentes usuarios prefieren métodos diferentes. Con suerte, esta publicación te ha brindado el conocimiento para hacerlo por ti mismo.

Artículos Relacionados:

  • Ejecutar automáticamente una macro al abrir un libro
  • Subs privados vs públicos, funciones variables en VBA
  • Códigos VBA útiles para Excel (30 macros de ejemplo + libro electrónico gratuito)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Este sitio web utiliza cookies para mejorar la experiencia del usuario y garantizar un funcionamiento eficiente. Al utilizar nuestro sitio web, aceptas todas las cookies de acuerdo con nuestra política de cookies. Leer mas...