работает библиотека Python xlwings и происходит сбой COMRetryObjectWrapper (DispatchEx ('Excel.Application')) - PullRequest
0 голосов
/ 10 июня 2019

У меня есть код, который в основном манипулирует файлом xlsm, нажимает кнопку макроса и затем принудительно закрывает его (используя psutil)

процесс такой: открыть файл xlsm (MyExcel.xslm) ==> записать данные ==> нажать кнопку макроса, сохранить ==> принудительно закрыть (с помощью psutil).

и процесс повторяется 'x' раз (скажем, 20000 раз)

это сила закрытия:

for proc in psutil.process_iter():
        if proc.name() == "EXCEL.EXE":
             proc.kill()

и при полном случайном запуске python останавливается со следующей ошибкой:

  File "C:\Program Files\Python36\lib\site-packages\xlwings    \_xlwindows.py", line 296, in __init__
    self._xl = COMRetryObjectWrapper(DispatchEx('Excel.Application'))
  File "C:\Program Files\Python36\lib\site-packages\win32com\client\__init__.py", line 113, in DispatchEx
   dispatch = pythoncom.CoCreateInstanceEx(clsid, None, clsctx,   serverInfo, (pythoncom.IID_IDispatch,))[0]
 pywintypes.com_error: (-2146959355, 'Server execution failed', None, None)

Я использую Python 3.6.6, xlwings = 0.15.1

попытался добавить задержки (time.sleep (1)), чтобы добавить время между выполнениями

в этой строке всегда происходит сбой (последняя строка):

класс RoutingManipulator ():

def __init__(self):

    self.__number_of_cells = 48
    self.new_file = os.path.join(folder, file)self.new_file= Myfile.xlsm

    self.workBook = xw.Book(self.new_file) # FAILS HERE!!

в этом примере, это только сбой в прогоне номер = 612.

иногда не получается 500 ... и т. Д.

1 Ответ

0 голосов
/ 10 июня 2019

Как показал вышеупомянутый комментарий, я реализовал внутреннее уничтожение,

self.workBook.app.kill ()

похоже, что это решило проблему.

...