Gary reçoit régulièrement un fichier XLS généré par une personne extérieure à son entreprise. Il doit ensuite importer des macros dans le classeur (ou, dérange !, les copier à partir d’un fichier TXT), puis enregistrer le classeur au format XLSM. Gary se demande s’il existe un moyen d’automatiser cela, de sorte qu’il puisse exécuter une macro qui importera les macros qu’il ajouterait normalement manuellement, puis enregistrait le classeur au format approprié.

Il existe un moyen de l’automatiser à l’aide de l’objet VBProject. Si votre fichier texte externe contient essentiellement des modules Visual Basic, vous pouvez utiliser la méthode Import pour importer ces modules. Il se comporte exactement comme si vous utilisiez les fonctionnalités d’importation de Visual Basic Editor. Voici un exemple de code que vous pourriez utiliser:

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

Notez que le code enregistre le classeur actif en tant que fichier XLSM avant d’effectuer réellement l’importation. Cela est nécessaire car la fonction d’importation peut hésiter si vous essayez d’importer un module VBA dans un classeur qui ne prend pas en charge les macros. En outre, si vous obtenez une erreur lors de l’exécution de la macro, vous souhaiterez peut-être vérifier dans Visual Basic Editor que vous avez établi une référence à la bibliothèque d’objets d’extensibilité VBA.

Pour utiliser la macro, assurez-vous de mettre à jour la constante ModulePath afin qu’elle pointe directement vers le fichier texte souhaité. La macro doit également être stockée dans votre classeur personnel afin qu’elle soit disponible chaque fois que vous utilisez Excel.

Vous pourriez également profiter en examinant du code sur le site de Ron DeBruin qui montre comment importer et exporter du code VBA dans une macro:

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

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (11855) s’applique à Microsoft Excel 2007, 2010, 2013 et 2016.