Utilisation de Python pour lire VBA à partir d'une feuille de calcul Excel

J'aimerais écrire un programme VBA diff dans (de preference) Python. Existe-t-il une bibliothèque Python qui me permettra de lire le VBA contenu dans une feuille de calcul Excel?

Voici un rapide et sale boilerplate pour vous aider à démarrer. Il utilise l'object Excel COM (une solution Windows uniquement):

from win32com.client import Dispatch wbpath = 'C:\\example.xlsm' xl = Dispatch("Excel.Application") xl.Visible = 1 wb = xl.Workbooks.Open(wbpath) vbcode = wb.VBProject.VBComponents(1).CodeModule print vbcode.Lines(1, vbcode.CountOfLines) 

Ceci imprime la macro stupide que j'ai enregistrée pour cet exemple:

 Sub silly_macro() ' ' silly_macro Macro ' ' Range("B2").Select End Sub ' Sub silly_macro() ' ' silly_macro Macro ' ' Range("B2").Select End Sub ' Sub silly_macro() ' ' silly_macro Macro ' ' Range("B2").Select End Sub ' Sub silly_macro() ' ' silly_macro Macro ' ' Range("B2").Select End Sub 

Notez que Lines et VBComponents utilisent l'indexing basée sur 1. VBComponents prend également en charge l'indexing par nom de module. Notez également que Excel nécessite des barres obliques dans les paths d'access.

Pour plonger plus profondément, voir Pearson's Programming The VBA Editor . (L'exemple ci-dessus était partagé de ce que j'ai écrémé de là.)

J'ai créé une application qui s'appelle VbaDiff. Si vous lui fournissez deux files Excel, il va comparer le code VBA dans chacun d'eux. Vous pouvez également l'exécuter à partir de la command line ou utiliser la version fournie avec une API si vous souhaitez l'intégrer à vos propres programmes.

Vous pouvez en savoir plus sur http://www.technicana.com/vbadiff-information.html

Chris