Взаимодействие Python с макросами Excel - PullRequest
0 голосов
/ 07 мая 2019

Я хотел бы выйти из приложения Excel из кода Python.Мой код Python открывает книгу Excel, запускает макрос, а затем закрывает книгу.Однако приложение Excel все еще работает.Как мне выйти из Excel?

Это ошибка, которую я получаю от Python IDLE:

(-2147417848, 'The object invoked has disconnected from its clients.', None, None)

Вот мой код Python:

import xl


report = xl.Workbook(r"C:\Desktop\Reader.xlsm")
print(report)

report.xlWorkbook.Application.Run('Reader')

report.xlWorkbook.Close(SaveChanges=False)
report.xlWorkbook.Application.Quit()

print("The job is done")

Вот мой Excelмакрос:

Public Sub Reader()

MsgBox ("Hello World")

End Sub

1 Ответ

1 голос
/ 08 мая 2019

Комментарий от dwirony - это обходной путь, который определенно можно использовать.Однако вы действительно хотите пойти по этому пути правильно, иначе у вас может получиться зависший процесс Excel и утечки памяти.

На мой взгляд, правильный путь будет:

import win32com.client

xl = win32com.client.Dispatch("Excel.Application")

report = xl.Workbooks.Open("C:\Desktop\Reader.xlsm")
xl.Application.Run('Reader')
report.Close False
xl.Application.Quit()
xl = None
del xl

print("The job is done")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...