簡體   English   中英

MS Office 自動化:在宏運行時收到通知(事件)

[英]MS Office Automation: Get notified (Event) when a macro runs

我正在使用 C#/.NET 開發一個 MS Office(Excel、Word、PowerPoint 和 Outlook)加載項,它會跟蹤和記錄一些發生在 DocumentOpen、DocumentContentChange 等事件時的事件。但是,經過幾天的搜索,我當在 Excel 工作簿、Word 文檔等上運行宏時,我無法找到一種方法(事件)來獲得通知

困難的方法是嘗試捕獲用戶可以遵循的所有可能路徑來運行宏,使用鼠標和鍵盤掛鈎 Win API,它們是:

  1. 使用“宏”對話框(使用純 Win API 訪問窗口): OnClick,如果這是 ActiveWindow,並且“運行”按鈕有焦點,請讀取“宏名稱:”下文本框中的值:label,但我發現這種方法非常復雜,因為在某些情況下,例如:用戶按 ENTER 鍵並且焦點不在“運行”按鈕上,或者如果用戶雙擊運行宏的宏列表中的項目..
  2. 按組合鍵:例如,宏有一個與之關聯的 Ctrl+F8 鍵。

  3. 單擊一個形狀(主要是 excel):檢查該形狀是否附加了宏。

我可以看到這些方法非常有限。

你有更好的建議嗎?

我這樣做的方法是在運行宏時將數據存儲在數據庫的表中。 這樣代碼就在宏中,你可以確定如果宏運行,數據將在數據庫中。

請查看“應用程序和服務日志”(與“Windows 日志”分開)下記錄的事件,然后查看“Microsoft Office 警報”。

有不同類型的警報,包括與宏相關的警報 - 也許您會在那里找到您要查找的信息。

請讓我們知道結果。 這不是很好記錄的事件存儲。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM