如何获取pywin32访问的VBA对象库成员的包装器

2024-09-21 02:45:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我用pywin32向Word和Excel发送VBA命令,代码是用PyCharm编写的。 问题是pywin32没有围绕VBA对象的永久包装器,而是使用makepy来生成必要的模块。那会造成一些不便。你知道吗

  • 没有注释类型提示def my_func (workbook: Workbook)
  • 无类型检查isinstance(workbook, Workbook)
  • 类成员没有PyCharm自动完成
  • 方法成员没有参数提示

例如,工作簿对象类型为:

<class 'win32com.gen_py.00020813-0000-0000-C000-000000000046x0x1x9.Workbook.Workbook'>

我假设00020813-0000-0000-C000-000000000046x0x1x9是注册表中VBA类型库的键。你知道吗

生成的包装器位于...\site-packages\win32com\gen_py\00020813-0000-0000-C000-000000000046x0x1x9_Workbook.py

所以要在注释、类型检查、参数提示等方面使用工作簿类型。。需要手动定义,例如:

Workbook = win32com.gen_py.00020813-0000-0000-C000-000000000046x0x1x9.Workbook.Workbook

但是,请考虑:

  • 这只是部分解决方案,因为makepy生成的包装器将方法包装为类成员,而不是属性,属性映射到字典中。你知道吗
  • 用有意义的名称手动重新声明所有VBA类型是不切实际的

是否可以使用生成的python代码自动生成VBA类型库包装器,是否存在这样的工具/库?你知道吗


Tags: 对象方法代码类型参数成员vbapycharm

热门问题