Gary riceve regolarmente un file XLS generato da qualcuno al di fuori della sua azienda. Ha quindi bisogno di importare alcune macro nella cartella di lavoro (o, no, copiarle da un file TXT) e quindi salvare la cartella di lavoro in formato XLSM. Gary si chiede se esiste un modo per automatizzarlo, in modo tale da poter eseguire una macro che importerà le macro che normalmente aggiungerebbe manualmente e quindi salvare la cartella di lavoro nel formato corretto.

C’è un modo per automatizzarlo utilizzando l’oggetto VBProject. Se il file di testo esterno contiene, essenzialmente, moduli Visual Basic, è possibile utilizzare il metodo Import per importare effettivamente quei moduli. Si comporta esattamente come se dovessi utilizzare le funzionalità di importazione di Visual Basic Editor. Ecco un esempio di codice che potresti usare:

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

Si noti che il codice salva la cartella di lavoro attiva come file XLSM prima di eseguire effettivamente l’importazione. Ciò è necessario perché la funzione di importazione potrebbe bloccarsi se si tenta di importare un modulo VBA in una cartella di lavoro che non supporta le macro. Inoltre, se si verifica un errore durante l’esecuzione della macro, è possibile controllare in Visual Basic Editor di aver stabilito un riferimento alla libreria di oggetti Extensibility VBA.

Per utilizzare la macro, assicurati di aggiornare la costante ModulePath in modo che punti direttamente al file di testo desiderato. La macro dovrebbe anche essere archiviata nella cartella di lavoro personale in modo che sia disponibile ogni volta che si utilizza Excel.

Potresti anche trarre profitto esaminando del codice sul sito di Ron DeBruin che mostra come importare ed esportare codice VBA all’interno di una macro:

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

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (11855) si applica a Microsoft Excel 2007, 2010, 2013 e 2016.