使用Python从Excel电子表格中读取VBA

我想写(最好)Python的VBA差异程序。 有没有一个Python库,可以让我读取Excel电子表格中包含的VBA?

这里有一些快速和肮脏的样板,让你开始。 它使用Excel COM对象(仅限Windows解决scheme):

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) 

这将打印我为这个例子logging的愚蠢的macros:

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

请注意, LinesVBComponents使用从1开始的索引。 VBComponents也支持通过模块名称进行索引。 另请注意,Excel需要在path中使用反斜杠。

深入了解皮尔逊的编程VBA编辑器 。 (上面的例子是从我从那里掠过的东西拼凑而成的。)

我创build了一个名为VbaDiff的应用程序。 如果您提供两个Excel文件,它将比较每个文件中的VBA代码。 您也可以从命令行运行它,或者如果要将它与您自己的程序集成,请使用API​​附带的版本。

您可以在http://www.technicana.com/vbadiff-information.htmlfind更多信息

克里斯