原因:
后台存在win32com操作过的excel接口,可能是之前运行时代码出错遗留,或者其他原因遗留。
解决方法:
任务处理器
代码
今天在使用win32com设置excel属性的时候报了这个错误
联想之前都没有出现过这个问题,猜测是否后台存在win32com处理过的excel未关闭,导致占用无法更改设置,打开任务处理器一看,果不其然,之前报错时候留下的excel还在后台没有关闭,将这些excel关闭后代码无误。
代码解决法:
该方法是我之前使用excel大量新建关闭时从网上复制的,因为新建的excel只是关闭而没有删除,实际上在后台还是存在的。
excel = DispatchEx("Excel.Application")
def close_excel_by_force(excel): #关闭进程
# Get the window's process id's
hwnd = excel.Hwnd
t, p = win32process.GetWindowThreadProcessId(hwnd)
# Ask window nicely to close
try:
handle = win32api.OpenProcess(win32con.PROCESS_TERMINATE, 0, p)
if handle:
win32api.TerminateProcess(handle, 0)
win32api.CloseHandle(handle)
except:
pass