簡體   English   中英

從 Outlook 運行 Excel 宏,根據電子郵件主題觸發

[英]Run Excel Macro from Outlook, Triggered Based on Email Subject

我正在嘗試設置一個自動化過程,當我在 Outlook 中收到一封包含“主題”的電子郵件時,它會自動觸發宏以在 Excel 中打開附加的 .xls 文件並運行我在 Excel 中設置的宏。 如何做到這一點?

如有必要,可以提供更多信息 - 謝謝!

您首先需要在 Outlook 中編寫 vba 代碼。 該網站可以幫助您入門。 然后讓它檢查附件是否是excel可以打開的文件類型,如果是這樣就讓它打開excel。 在 excel 文件上運行另一個宏將需要 excel 的 vba 代碼還打開包含您編寫的宏的工作簿,因此您還需要一種方法,使 Outlook 宏可以將文件名插入到 excel 宏中,以識別在哪個工作簿上需要運行excel宏。

編輯:也許還有一種方法可以讓您打開的 excel 工作簿從您將宏存儲在硬盤上的位置導入宏,這樣可以節省您打開另一個 excel 文件並引用您希望它運行的文件。 然后您可以參考“ActiveWorksheet”

有兩種可能的方法來執行您的任務。

第一個是創建 Outlook 規則並分配 VBA 宏以在規則觸發時運行。 VBA 宏子應如下所示:

Public Sub Test(mail as MailItem)
   ' so something here
End Sub

第二種方式是處理Application類的NewMailEx事件。 在這種情況下,無需在 Outlook 中創建規則。 您的代碼將由事件觸發。 這是 MSDN 聲明的內容:

對於 Microsoft Outlook 處理的每個接收到的項目,此事件都會觸發一次。 該項目可以是幾種不同的項目類型之一,例如 MailItem、MeetingItem 或 SharingItem。 EntryIDsCollection 字符串包含對應於該項目的條目 ID。

NewMailEx事件在新郵件到達收件箱時和客戶端規則處理發生之前觸發。 您可以使用 EntryIDCollection 數組中返回的條目 ID 來調用 NameSpace.GetItemFromID 方法並處理該項目。 謹慎使用此方法以盡量減少對 Outlook 性能的影響。 但是,根據客戶端計算機上的設置,在新郵件到達收件箱后,垃圾郵件過濾和將新郵件從收件箱移動到另一個文件夾的客戶端規則等進程可能會異步發生。 您不應假設在這些事件觸發后,收件箱中的項目數量總是會增加一項。

在代碼中,您將需要自動化 Excel。 Application 類的Run方法可用於以編程方式運行 VBA 宏。

最后,您可能會發現Outlook 2010 中的 VBA 入門文章很有幫助。

暫無
暫無

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

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