Start » VBA-Ejemplos » Copiar módulo VBA a otro libro Excel

Copiar módulo VBA a otro libro Excel

Método para guardar un módulo VBA/importarlo a otro libro Excel. Al exportar hojas a un libro nuevo (el primer ejemplo de código), los módulos VBA no se copiarán, sino el libro nuevo se quedará sin código VBA.

Es decir, este ejemplo no vale para copiar módulos VBA.

vbaproyecto1


'copiar hojas a un libro nuevo
Sheets(Array("Hoja1", "Hoja2", "Hoja3")).Copy

Para exportar un módulo VBA, primero hay que guardarlo como un archivo de texto, y luego importarlo desde el libro nuevo.

Objetos del editor VBA

El editor VBA tiene 2 objetos básicos:

VBProject
» Todos los módulos y componentes/referencias VBA del libro

VBComponent
» Un módulo (o formulario) específico del VBProject

Para utilizarlos debes marcar la siguiente referencia del editor VBA:
Herramientas - Referencias - Microsoft Visual Basic for Applications Extensibility x.x.

Exportar módulo VBA

'exportar módulo VBA
Dim vbaProyecto As VBIDE.VBProject
Dim vbaModulo As VBIDE.VBComponent
Public strRuta as String

Set vbaProyecto = ThisWorkbook.VBProject
Set vbaModulo = vbaProyecto.VBComponents("Module1")
strRuta = ThisWorkbook.Path & "\modulo1_export.txt"
'o strRuta = "c:\modulo1_export.txt"

vbaModulo.Export strRuta

Importar módulo VBA

'importar módulo VBA
Dim vbaProyecto As VBIDE.VBProject
Dim vbaModulo As VBIDE.VBComponent
Public strRuta as String

strRuta = ThisWorkbook.Path & "\modulo1_export.txt"
'o strRuta = "c:\modulo1_export.txt"

Set vbaProyecto = ActiveWorkbook.VBProject
vbaProyecto.VBComponents.Import (strRuta)

'suprimir el archivo plano
Kill strRuta