一般使用wordApp = win32com.client.Dispatch('Word.Application')创建应用对象,但该对象不支持消息回传,查阅网络,https://win32com.goermezer.de/microsoft/office/events-in-microsoft-word-and-excel.html
给出了利用wwin32com的DispatchWithEvents模块,创建可响应文档事件的方案。
原文是基于python2的,在python3.6下运行有语法报错,重新调整如下:
# OfficeEvents - test/demonstrate events with Word and Excel.
from win32com.client import DispatchWithEvents, Dispatch
import msvcrt, pythoncom
import time, sys
import types
import threading
stopEvent = threading.Event()
def TestExcel():
class ExcelEvents:
def OnNewWorkbook(self, wb):
if type(wb) != types.InstanceType:
raise RuntimeError( "The transformer doesnt appear to have translated this for us!")
self.seen_events["OnNewWorkbook"] = None
def OnWindowActivate(self, wb, wn):
if type(wb) != types.InstanceTy