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

时间:2012-09-05 18:32:27

标签: python excel excel-vba vba

我想在(最好)Python中编写一个VBA diff程序。是否有一个Python库可以让我读取Excel电子表格中包含的VBA?

2 个答案:

答案 0 :(得分:6)

这是一些快速而肮脏的样板文件,可帮助您入门。它使用Excel COM对象(仅限Windows的解决方案):

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)

这会打印我为此示例录制的傻宏:

Sub silly_macro()
'
' silly_macro Macro
'

'
    Range("B2").Select
End Sub

请注意,LinesVBComponents使用基于1的索引。 VBComponents还支持按模块名称建立索引。另请注意,Excel需要在路径中使用反斜杠。

深入了解Pearson的Programming The VBA Editor。 (上面的例子是从我从那里撇去的东西拼凑而成的。)

答案 1 :(得分:0)

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

您可以在http://www.technicana.com/vbadiff-information.html

了解更多信息

克里斯