Ejecutar macro en otro archivo de excel

Excel

Macros en otro archivo de Excel

Probablemente hayas pasado por esta situación en algunos de tus procesos manejando macros en VBA con Excel: necesitas ejecutar una macro, pero esta macro está en otro archivo, y en realidad no quieres pasar el código al archivo donde lo estás ejecutando. Las razones pueden ser múltiples y todas ellas válidas. A mi me pasó y seguí estos pasos para ejecutar una macro que reside en otro archivo.

  • El archivo donde tienes las macros se queda sin cambios. Aquí te propongo este ejemplo que puedes descargar: archivo_con_macros
  • El archivo desde donde lanzas la ejecución debe llevar este código:

  • Aquí te propongo también este ejemplo que puedes descargar ( ejecutar_desde_otro_archivo ). Solo ve al código en VBA (desde el tab developer, Alt+F11, cualquier método que prefieras).

Para que puedas entender lo que ocurre con este código:

  • Esta parte del código te mostrará una ventana que te ayuda a localizar el archivo donde tienes las macros:

‘Localizar archivo en el sistema de archivos
nombreDelArchivoConMacros = Application.GetOpenFilename(“Excel Files (*.xlsm), *.xlsm”)

  • El archivo donde residen las macros debe estar abierto. Por eso una vez localizado el arhivo, debes abrirlo y avisarle a VBA que esta será tu instancia activa:

‘Abrir archivo
Workbooks.Open nombreDelArchivoConMacros

‘Determinar archivo de origen como libro activo
Set archivoConMacros = ActiveWorkbook

  • Una vez abierto, puedes seguir con la ejecución:

‘Ejecutar macro del otro archivo (macro: abrirBlog)
Application.Run “‘archivo_con_macros.xlsm’!abrirBlog”

  • Y para finalizar, VBA se encarga de cerrar el archivo:

‘Cerrar archivo
archivoConMacros.Close Savechanges:=False

En el blog tenemos muchos ejemplos de Excel, consúltalos en este link: https://www.fditf.com/bi/category/excel/

 

 

Copyright © Todos los derechos reservados | FDI Tecnología y Finanzas, SAS de CV. De no existir previa autorización, queda expresamente prohibida la Publicación, retransmisión, edición y cualquier otro uso de los contenidos.