2015-07-10 85 views
0

我試圖設置一個自動化過程,當我在Outlook中收到一封包含「主題」的電子郵件時,它會自動觸發一個宏以打開附件中的.xls文件Excel並運行我在Excel中設置的宏。這如何實現?從Outlook運行Excel宏,根據電子郵件觸發

如果需要可以提供更多信息 - 謝謝!

+0

作爲宏的附件嗎?或者你只是試圖打開附件,然後調用第二個excel文件。 – 0m3r

回答

0

有兩種可能的方式來實現您的任務。

第一個是創建一個Outlook規則,爲規則觸發時分配一個VBA宏來運行。 VBA宏子看起來應該像下列操作之一:

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

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

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

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

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

最後,您可能會發現Getting Started with VBA in Outlook 2010文章有幫助。

1

您需要首先在Outlook中編寫vba代碼。 This site可以幫助你開始。 然後讓它檢查附件是否可以打開一個文件類型的excel,如果是這樣的話就讓它打開excel。 在excel文件上運行另一個宏將需要excel的vba代碼也打開包含您編寫的宏的工作簿,因此您還需要一種方法,讓Outlook宏可以將文件名插入到Excel宏中以標識哪些工作簿需要運行excel宏。

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

相關問題