MS Office Automation:在宏运行时收到通知(事件)

时间:2014-05-30 11:34:50

标签: c# excel vba ms-word vsto

我正在使用C#/ .NET开发一个MS Office(Excel,Word,PowerPoint和Outlook)加载项,它跟踪和记录发生时的一些事件,如DocumentOpen,DocumentContentChange..etc但是,经过几天的搜索,当在Excel工作簿,Word文档等上运行宏时,我无法找到通知(事件)以获得通知

艰难的方法是尝试捕获用户可以使用Mouse&运行宏的所有可能路径。 Keyboard Hooking Win API,它们是:

  1. 使用“宏”对话框(使用纯Win API访问窗口): OnClick,如果这是ActiveWindow,并且“运行”按钮具有     焦点,读取TextBox下“宏名称:”标签下的值,但是     我发现这种方法非常复杂,因为在某些情况下     例如:用户按ENTER键,焦点不在“运行”按钮上     或者如果用户在运行宏的宏列表中的项目上使用DoubleClick ..
  2. 按下组合键:从宏开始,有一个与之关联的Ctrl + F8键。

  3. 点击形状(主要是excel):检查此形状是否附有宏。

  4. 我可以看到这些方法非常有限。

    你有更好的建议吗?

1 个答案:

答案 0 :(得分:0)

我这样做的方法是在运行宏时将数据存储在数据库的表中。这样代码就在宏中,你可以确定如果宏运行,数据将在数据库中。