python - 从 Excel 中的模块获取代码

标签 python vba excel pywin32

我有许多具有宏的工作簿,这些宏使用嵌入在代码中的连接字符串指向特定的 SQL 服务器。我们已经迁移到一个新的 SQL 服务器,所以我需要检查这些并更改连接字符串,以查看每个明确提到它的宏中的新服务器。

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

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

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

最佳答案

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

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

值得注意的是,第一行是第 1 行,而不是第 0 行,因为这让我很吃惊。以下会报错vbc.CodeModule.Lines(0, vbc.CodeModule.CountOfLines - 1)因为索引 0 超出范围。

关于python - 从 Excel 中的模块获取代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39408029/

相关文章:

excel - 连接可变数量的字段

vba - Excel VBA - 检查是否连接到互联网以及是否通过 Wifi 或以太网

excel - 如何在Excel VBA中将单行列分解为多行

excel - 添加具有连续名称的工作表

python - 当在 python 中使用任何 Web 请求库时,响应在我的公司 PC 上超时,但在我的个人 PC 上却没有?

excel - 第二次运行宏时出现错误代码 462

mysql - 有没有像 JSON Builder 这样的东西?

python - 将字符串转换为 Pandas 列中的整数列表的快速方法?

python - Django 和 DB 错误 "Column ' id'指定了两次”

python - Windows Sublime Text,如何使用 Anaconda Python 而不是默认的