我想在(最好)Python中编写一个VBA diff程序。是否有一个Python库可以让我读取Excel电子表格中包含的VBA?
答案 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
请注意,Lines
和VBComponents
使用基于1的索引。 VBComponents
还支持按模块名称建立索引。另请注意,Excel需要在路径中使用反斜杠。
深入了解Pearson的Programming The VBA Editor。 (上面的例子是从我从那里撇去的东西拼凑而成的。)
答案 1 :(得分:0)
我创建了一个名为VbaDiff的应用程序。如果您提供两个Excel文件,它将比较每个文件中的VBA代码。您也可以从命令行运行它,或者如果要将它与您自己的程序集成,请使用API附带的版本。
您可以在http://www.technicana.com/vbadiff-information.html
了解更多信息克里斯