我正在尝试保存由另一个打开的应用程序生成的Excel文件。例如,Excel应用程序在前台。此文件包含一些数据,需要保存,例如,写入磁盘。
换句话说,我需要执行类似File-〉SaveAs的操作。
重现步骤:
1.打开Excel应用程序,默认标题显示为Book 1- Excel
1.编写此代码并运行
import win32com.client as win32
app = win32.gencache.EnsureDispatch('Excel.Application')
app.Workbooks(1).SaveAs(r"C:\Users\test\Desktop\test.xlsx")
app.Application.Quit()
错误-
Traceback (most recent call last):
File "c:/Users/test/Downloads/automate_excel.py", line 6, in <module>
ti = disp._oleobj_.GetTypeInfo()
pywintypes.com_error: (-2147418111, 'Call was rejected by callee.', None, None)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "c:/Users/test/Downloads/automate_excel.py", line 6, in <module>
app = win32.gencache.EnsureDispatch('Excel.Application')
File "C:\Users\test\AppData\Local\Programs\Python\Python38\lib\site-packages\win32com\client\gencache.py", line 633, in EnsureDispatch
raise TypeError(
TypeError: This COM object can not automate the makepy process - please run makepy manually for this object
3条答案
按热度按时间mzillmmw1#
您的问题可能有很多来源,所以如果您分享更多代码,我会很感激。第二个错误可能发生在您运行
excel = win32.gencache.EnsureDispatch('Excel.Application')
行的多个示例时,例如在一个for循环.中。此外,请确保有一个完全激活并获得.许可的Excel版本。ajsxfq5m2#
这对我来说是有效的(在python==3.9.8和pywin32==305上)。你会看到第一行和你的不一样,但我认为这就是它。
在此过程中,我们不断收到工作簿或设置DisplayAlerts的属性错误。我们发现(从这个问题:Excel.Application.Workbooks attribute error when converting excel to pdf),如果Excel处于循环状态(例如,编辑单元格或打开弹出窗口),则会出现错误。因此,请确保在单元格外单击Enter键,这样您就不会编辑它。
编辑:添加pywin32版本,包括更多提示
weylhg0b3#
这是根据@scotscotmcc的答案为我工作的版本。问题出在我运行程序时处于编辑模式的单元格上。确保在当前单元格中按Enter键,然后退出excel的编辑模式。