Ошибка при конвертации из xls в xlsx с помощью win32com. Эта программа выдает ошибку, если я работаю с другим листом Excel

import pandas as pd
import os
import win32com.client
import win32com.client.gencache
fname = "C:\\Users\\prashanth\\Desktop\\student.xls"
excel = win32com.client.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Open(fname)
wb.SaveAs(fname+"x", FileFormat = 51)    
wb.Close()                               
excel.Application.Quit()

Отслеживание (последний вызов последним): файл "c: \ users \ prashanth \ appdata \ local \ programs \ python \ python36-32 \ lib \ site-packages \ win32com \ client \ gencache.py", строка 536, в EnsureDispatch ti = disp. oleobj .GetTypeInfo () pywintypes.com_error: (-2147418111, 'Вызов отклонен вызываемым пользователем.', Нет, Нет)

Во время обработки вышеуказанного исключения произошло другое исключение:

Traceback (последний вызов последним): файл dailyreports2.py, строка 6, в файле excel = win32com.client.gencache.EnsureDispatch ('Excel.Application') c: \ users \ prashanth \ appdata \ local \ programs \ python \ python36-32 \ lib \ site-packages \ win32com \ client \ gencache.py ", строка 547, в EnsureDispatch raise TypeError (" Этот COM-объект не может автоматизировать процесс makepy - запустите makepy для этого объекта вручную ") TypeError : Этот COM-объект не может автоматизировать процесс makepy - запустите makepy вручную для этого объекта.


person john    schedule 22.08.2017    source источник
comment
Пожалуйста, публикуйте свои обновления в своем вопросе. Трудно прочитать из ваших комментариев   -  person Raptor    schedule 22.08.2017
comment
Я обновил свой вопрос.   -  person john    schedule 22.08.2017
comment
указанная выше программа работает, когда другие листы Excel закрыты или сохранены! но это не работает, когда я работаю с любым другим листом Excel   -  person john    schedule 22.08.2017
comment
@Raptor какие-нибудь обновления? я все еще застрял с этим   -  person john    schedule 23.08.2017


Ответы (2)


После этих строк я получил ту же ошибку:

import win32com.client
import win32com.client.gencache
xl = win32com.client.gencache.EnsureDispatch('Excel.Application')

У меня сработал перезапуск машины.

person Eugene Lycenok    schedule 21.11.2018
comment
Я получил эту ошибку. Иногда срабатывал перезапуск. В другой раз, когда перезапуск не помог, я изменил код на win32com.client.DispatchEx('Excel.Application'), и он сработал. Понятия не имею почему. - person ChaimG; 19.03.2020

Это связано с автоматическим созданием папки скриптов Python, связанных с объектом com. C: \ Users \ [имя пользователя] \ AppData \ Local \ Temp \ gen_py

Когда вы EnsureDispatch, эта папка создается каждый раз с помощью makepy. При отправке он ссылается на существующую папку.

Я имею дело с той же проблемой, и иногда удаляет содержимое 3.7 в папке gen_py. Я все еще обдумываю это, но я занят на работе

Дополнительную информацию можно найти в эта ветка

person Jack    schedule 03.06.2020