Я использую 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, существует ли такой инструмент / библиотека?