我遇到了win32com.client.WithEvents的问题。我正在调度Excel及其事件。之后我遇到问题,我通常无法与Excel交互(例如保存工作簿),似乎python已经抢占了excel进程。 我的代码的最小例子:
对我来说真的很奇怪,这段代码适用于PyScripter内部引擎,但不会像我期望的那样使用远程引擎,或者在PyCharm的python控制台中运行。
import win32com.client
class Events:
def __init__(self):
pass
def OnWorkbookBeforeSave(self, workbook, saveAsUI, Cancel):
print "before save"
excel = win32com.client.Dispatch("Excel.Application")
excel.Visible = True
wb = excel.Workbooks.Add()
event = win32com.client.WithEvents(excel, Events)
print "dispatched events"
wb.Save()
此代码用于在保存之前打印""每次保存文档。当我把它放入解释器时,它通过python保存工作簿时效果很好,但是我不能使用鼠标和保存图标来更改工作簿内容或保存我的工作簿。但是,当我使用PyScripter内部引擎时,它可以工作。
有没有办法,可以在这种情况下使用,所以我可以通过python保存我的工作簿并改变其内容,就像在正常的交互(使用鼠标和键盘)?而不是使用PyScripter内部引擎。