2015-10-23 45 views
0

我在Outlook中有一條規則,每天向特定文件夾發送一封電子郵件。然後,我有一個VBA腳本,它會在發現該文件夾中有新的未讀消息並將附件保存到硬盤驅動器上的一個文件夾中,並執行一些其他格式化的類型(附件)。適用於規則的Outlook VBA腳本出錯

然後,我只是將腳本鏈接到Outlook規則嚮導中的規則,以便它作爲一個包運行。

問題如下:在將消息分類到適當的文件夾之前,腳本被踢開。實際上它應該在消息排序後運行(否則沒有任何事情可以採取行動)。任何想法如何糾正?

代碼目前開始如下:

sub saveattachment() 

它應該是這個吧?

private sub saveattachment() 

public sub saveattachment() 

它會更好有「規則」嵌入宏代替,然後只需運行它作爲一個私人小組隨時日常電子郵件出現在我的收件箱?

+0

可能的重複[在Outlook中收到新郵件後如何觸發宏運行?](http://stackoverflow.com/questions/11263483/how-do-i-trigger-a-macro-對運行後,一個新的郵件,被接收的功能於預期) – niton

回答

0

如果你需要指定一個VBA宏子到Outlook規則,在VBA子看起來應該像下面的一個:

Public Sub Test(mail as MailItem) 
    ' your code goes there 
End Sub 

中的MailItem類的實例作爲參數傳遞和代表的電子郵件到達收件箱。

但如果您需要確保您的代碼在郵件移動到特定文件夾時被觸發,則需要處理來自該文件夾的Items類的ItemAdd事件。請注意,如果同時將16個以上的項目添加到文件夾中,則不會觸發該事件。

Public WithEvents myOlItems As Outlook.Items 

Public Sub Initialize_handler() 
Set myOlItems = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts).Items 
End Sub 

Private Sub myOlItems_ItemAdd(ByVal Item As Object) 
Dim myOlMItem As Outlook.MailItem 
Dim myOlAtts As Outlook.Attachments 
Set myOlMItem = myOlApp.CreateItem(olMailItem) 
myOlMItem.Save 
Set myOlAtts = myOlMItem.Attachments 
' Add new contact to attachments in mail message 
myOlAtts.Add Item, olByValue 
myOlMItem.To = "Sales Team" 
myOlMItem.Subject = "New contact" 
myOlMItem.Send 
End Sub 

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