2016-09-09 54 views
0

我有一些工作簿有宏指向特定的SQL服务器使用嵌入代码中的连接字符串。我们已经迁移到一个新的SQL服务器,所以我需要通过这些并更改连接字符串来查看每个宏中明确提到它的新服务器。从Excel中的模块获取代码

目前我可以列出工作簿中的所有模块,但是我无法从每个模块获取代码,只是名称和类型编号。

for vbc in wb.VBProject.VBComponents: 
    print(vbc.Name + ": " + str(vbc.Type) + "\n" + str(vbc.CodeModule)) 

什么属性存储代码,以便我可以找到并替换服务器名称?我看过VBA和pywin32文档,但找不到任何东西。

回答

1

明白了 - CodeModule对象中有一个Lines方法,它允许您根据起始行和结束行进行选择。与CountOfLines属性结合使用可以让你获得全部内容。

for vbc in wb.VBProject.VBComponents: 
    print(vbc.Name + ":\n" + vbc.CodeModule.Lines(1, vbc.CodeModule.CountOfLines)) 

值得注意的是,第一行是第一行,而不是第0行,因为这引起了我的注意。以下将错误vbc.CodeModule.Lines(0, vbc.CodeModule.CountOfLines - 1),因为索引0超出范围。