как получить оболочку для членов библиотеки объектов VBA, к которой обращается pywin32 - PullRequest
0 голосов
/ 29 мая 2019

Я использую 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 в аннотациях, проверках типов, подсказках параметров и т. Д. Требуется ручное определение, например:

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

Однако учтите:

  • Это будет только частичное решение, потому что оболочка, сгенерированная makepy, обернула методы как члены класса, но не как свойства, вместо этого свойства отображаются в словаре.
  • Переопределять вручную все типы VBA со значимыми именами нецелесообразно

Можно ли использовать сгенерированный код Python для автоматической генерации оболочки библиотеки типов VBA, существует ли такой инструмент / библиотека?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...