如何为pywin32

时间:2019-05-29 13:22:15

标签: python pywin32

我使用pywin32将VBA命令发送到Word和Excel,代码是用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类型库包装器,这样的工具/库是否存在?

0 个答案:

没有答案