Как обрабатывать аргументы ключевого слова VBA в pywin32?

#python #pywin32 #xlwings

#python #pywin32 #xlвинги

Вопрос:

У меня возникла проблема при попытке использовать pywin32 функцию API a в приложении xlwing для сохранения определенного диапазона в формате PDF:

 import xlwings as sw

app  = xw.App(add_book=False, visible=False)
book = app.books.open(fullname=GERALAMINA,
                    update_links=True,
                    read_only=False,
                    ignore_read_only_recommended=True)

sht = book.sheets[0]
sht.range('A1:B10').api.ExportAsFixedFormat(
            Type                 = 0, # xlTypePDF
            FileName             = r'C:/some/path/filename.pdf',
            Quality              = 0, # xlQualityStandard
            IncludeDocProperties = True
        )

 

Я использовал ключевые слова, следующие из документов VBA. Но получил следующую обратную трассировку:

 ---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-66-dece9e682dc6> in print_lamina(self)
    345             FileName             = r'C:/some/path/filename.pdf',
    346             Quality              = 0, # xlQualityStandard
--> 347             IncludeDocProperties = True
    348         )
    349 

~AppDataRoamingPythonPython37site-packagesxlwings_xlwindows.py in __call__(self, *args, **kwargs)
     64         while True:
     65             try:
---> 66                 v = self.__method(*args, **kwargs)
     67                 if isinstance(v, (CDispatch, CoClassBaseClass, DispatchBaseClass)):
     68                     return COMRetryObjectWrapper(v)

TypeError: ExportAsFixedFormat() got an unexpected keyword argument 'FileName'

 

Что я делаю не так?

Ответ №1:

Вы можете попробовать это с IncludeDocProperties = 1 помощью, но IncludeDocProperties = True также работает и в моем случае, смотрите здесь. Я попробовал ваш код, и в моем случае параметр FileName не сработал. Я должен использовать Filename , не спрашивай меня почему. Вот код, который работает для меня:

 import xlwings as xw

app  = xw.App(add_book=False, visible=False)
book = app.books.open(fullname=GERALAMINA,
                    update_links=True,
                    read_only=False,
                    ignore_read_only_recommended=True)

sht = book.sheets[0]
sht.range('A1:B10').api.ExportAsFixedFormat(
            Type                 = 0, # xlTypePDF
            Filename             = r'C:/some/path/filename.pdf',
            Quality              = 0, # xlQualityStandard
            IncludeDocProperties = 1
)
 

Кстати, это должно быть import xlwings as xw в вашем вопросе.

Комментарии:

1. Большое вам спасибо! Я сходил с ума от этого! Это ws была просто опечатка, но все равно еще раз спасибо!