Buscando respuesta para un cliente me vi en la necesidad de generar un código de manera automática en un segundo libro de trabajo, para que a su vez se ejecutara de manera independiente...
Dudé al principio de que tal cosa fuera posible, pero investigando, encontré una explicación de Chip Pearson que solucionaba mi problema.
Y esto es lo que veremos hoy, cómo es posible crear una macro en Excel que a su vez cree un segunda macro en cualquier otro libro..
Lo más importante de este código, y antes de empezar, es que debemos activar la librería:
Microsoft Visual Basic for Applications Extensibility 5.3
A localizar entre las referencias del Editor de VB:
Esta librería (VBIDE) es fundamental para nuestro propósito, ya que nos proporciona todos los objetos y valores para construir nuestros Proyectos de VB dentro de nuestro Editor de VB.
Nuestra macro la creamos en un módulo estándar de nuestro libro de trabajo.
En el ejemplo, la macro la crearemos en nuestro mismo libro... pero recuerda que es posible trabajar sobre un segundo libro...
El código:
Al lanzar nuestra macro podemos ver el resultado:
Dudé al principio de que tal cosa fuera posible, pero investigando, encontré una explicación de Chip Pearson que solucionaba mi problema.
Y esto es lo que veremos hoy, cómo es posible crear una macro en Excel que a su vez cree un segunda macro en cualquier otro libro..
Lo más importante de este código, y antes de empezar, es que debemos activar la librería:
Microsoft Visual Basic for Applications Extensibility 5.3
A localizar entre las referencias del Editor de VB:
Esta librería (VBIDE) es fundamental para nuestro propósito, ya que nos proporciona todos los objetos y valores para construir nuestros Proyectos de VB dentro de nuestro Editor de VB.
Nuestra macro la creamos en un módulo estándar de nuestro libro de trabajo.
En el ejemplo, la macro la crearemos en nuestro mismo libro... pero recuerda que es posible trabajar sobre un segundo libro...
El código:
Sub Macro_crea_Macro() 'ACTIVAR REFERENCIA !!! 'Microsoft Visual Basic for Applications Extensibility 5.3 Dim TxtMacro As String 'Escribimos el código de la macro nueva que generará esta... TxtMacro = "'Esta macro ha sido creada por otra macro" & Chr(13) & _ "Sub MacroNueva()" & Chr(13) & _ "MsgBox ""Macro Nueva generada con éxito!!""" & Chr(13) & _ "End Sub" Dim VBComps As VBComponents Set VBComps = ThisWorkbook.VBProject.VBComponents 'en este ejemplo trabajamos sobre Este libro de trabajo, 'pero pdríamos crear la Nueva Macro en cualquier otro libro... !! Dim VBComp As VBComponent Dim VBCodeMod As CodeModule 'Aquí creamos un nuevo módulo estándar... Set VBComp = VBComps.Add(vbext_ct_StdModule) Set VBCodeMod = VBComp.CodeModule 'al que le damos nombre: VBComp.Name = "Mod_B_Excelforo" 'Finalmente, insertamos el código en el módulo With VBCodeMod .InsertLines .CountOfLines + 1, TxtMacro End With End Sub
Al lanzar nuestra macro podemos ver el resultado:
excelente!!
ResponderEliminardeje de practicar macros por un tiempo, pero este código me hizo pensar que tengo ejemplos parecidos en mi baúl de los recuerdos de excel.
gracias por despertar los buenos tiempos que pase programando en VBA-Excel.
saludos.
Gracias a tí!!
EliminarSlds
Genial, Saludos
ResponderEliminarSlds!
Eliminar