Gary recibe periódicamente un archivo XLS generado por alguien ajeno a su empresa. Luego debe importar algunas macros al libro de trabajo (o, ¡molesta !, copiarlas de un archivo TXT) y luego guardar el libro en formato XLSM. Gary se pregunta si hay una manera de automatizar esto, de modo que pueda ejecutar una macro que importe las macros que normalmente agregaría manualmente y luego guardará el libro en el formato adecuado.

Hay una forma de automatizarlo utilizando el objeto VBProject. Si su archivo de texto externo contiene, esencialmente, módulos de Visual Basic, puede utilizar el método Importar para importar esos módulos. Se comporta exactamente igual que si utilizara las capacidades de importación del Editor de Visual Basic. Aquí tienes un ejemplo de código que podrías usar:

Sub AutomateImport()

Const ModulePath As String = "C:\temp\code.txt"



Dim thisTarget As Workbook     Dim thisName As String

Set thisTarget = ActiveWorkbook     thisName = thisTarget.Name

' Save as XLSM file (neceassry before importing module)

ActiveWorkbook.SaveAs thisName & ".xlsm", _       FileFormat:=xlOpenXMLWorkbookMacroEnabled

' Import the VBA code required     thisTarget.VBProject.VBComponents.Import ModulePath

' Save the workbook     ActiveWorkbook.Save End Sub

Tenga en cuenta que el código guarda el libro de trabajo activo como un archivo XLSM antes de realizar la importación. Esto es necesario porque la función Importar puede fallar si intenta importar un módulo VBA en un libro de trabajo que no admite macros. Además, si obtiene un error al ejecutar la macro, es posible que desee comprobar en el Editor de Visual Basic que ha establecido una referencia a la biblioteca de objetos de extensibilidad de VBA.

Para utilizar la macro, asegúrese de actualizar la constante ModulePath para que apunte directamente al archivo de texto deseado. La macro también debe almacenarse en su libro de trabajo personal para que esté disponible siempre que utilice Excel.

También puede beneficiarse examinando algún código en el sitio de Ron DeBruin que muestra cómo importar y exportar código VBA dentro de una macro:

https://www.rondebruin.nl/win/s9/win002.htm

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (11855) se aplica a Microsoft Excel 2007, 2010, 2013 y 2016.