MS Office自动化:当宏运行时获得通知(事件)
本文关键字:通知 事件 运行时 自动化 Office MS | 更新日期: 2023-09-27 18:05:49
我正在使用c#/开发MS Office (Excel, Word, PowerPoint和Outlook)插件。. NET,它跟踪和记录一些事件时发生的DocumentOpen, DocumentContentChange. etc .然而,经过几天的搜索,我无法找到一种方法(事件),当宏在Excel工作簿,Word文档上运行时得到通知。等
困难的方法是尝试捕获用户可以遵循的运行宏的所有可能路径,使用鼠标&Keyboard Hooking Win API,它们是:
- 使用"宏"对话框(使用纯Win API访问窗口): OnClick,如果这是ActiveWindow,并且"运行"按钮具有焦点,读取文本框中"宏名称:"标签下的值,但是我发现这种方法非常复杂,因为有一些情况例如:用户按下ENTER键而焦点不在"运行"按钮上或者如果用户双击运行该宏的宏列表中的一个项目…
-
按组合键:当宏有一个Ctrl+F8键与它关联时
-
点击一个形状(主要是excel):检查这个形状是否有一个宏附加到它。
我可以看到这些方法是非常有限的。
你有更好的建议吗?我这样做的方式是在宏运行时将数据存储在数据库中的表中。这样,代码就在宏中,您可以确保如果宏运行,数据将在数据库中。
请查看"应用程序和服务日志"下记录的事件。(与"windows日志"分开),然后是"Microsoft Office警报"。
有不同类型的警报,包括与宏相关的警报——也许您会在其中找到您要查找的信息。
请让我们知道结果。这不是一个文档完备的事件存储。