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

w.j*_*ard 2 python excel vba excel-vba

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

Ste*_*ski 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)
Run Code Online (Sandbox Code Playgroud)

这打印出我为此示例记录的愚蠢的宏:

Sub silly_macro()
'
' silly_macro Macro
'

'
    Range("B2").Select
End Sub
Run Code Online (Sandbox Code Playgroud)

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

深入了解Pearson的编程VBA编辑器.(上面的例子是从我从那里撇去的东西拼凑而成的.)