2013-02-13 97 views
1

我有VBA代碼在特定的Outlook文件夾中查找電子郵件中的附件並將它們保存到某個位置。Outlook規則未運行VBA代碼

我有一個Outlook規則將電子郵件發送到Outlook文件夾,然後觸發宏。該代碼不會自動在我的電腦上啓動,但會在另一臺計算機上啓動。電子郵件進入,規則將其放入文件夾,但代碼不運行。當我手動運行代碼時,通過VB編輯器,它將附件保存在正確的位置。

我檢查過以確保文件夾和路徑名是正確的(如果他們錯了,那麼無論哪種方式,手動運行時代碼將無法正常運行)。

展望規則:郵件到達

之後,從XXXXXXXXXXXX

與XXXX在主題

,這臺機器只

它移動到

應用此規則xxxxx文件夾

和運行Project1.ThisOutlookSession.Save

VBA代碼:

Sub Save(item As Outlook.MailItem) 
Dim olApp As Outlook.Application 
Dim objNS As Outlook.NameSpace 
Dim olFolder As Outlook.MAPIFolder 
Dim msg As Outlook.MailItem 

Set olApp = Outlook.Application 
Set objNS = olApp.GetNamespace("MAPI") 
Set olFolder = objNS.GetDefaultFolder(olFolderInbox) 
Set olFolder = olFolder.Folders("xxxxxxx") 
Set oApp = CreateObject("Shell.Application") 

For Each myitem In olFolder.Items 
    For Each att In myitem.Attachments 
    att.SaveAsFile "\\.............\" & att.FileName 
     myitem.Attachments.Remove 1 
     myitem.Save 
    Next 
Next 
End Sub 
+0

試試這個http://stackoverflow.com/questions/6604675/move-outlook-messages-if-content-contains-a-number-greater-than-threshold/9639088 #9639088移動代碼中的消息,如本文所示。所以基本上你把你的代碼和我的代碼結合起來 – 2013-02-14 06:57:29

回答

0

傳入的MailItem是在Sub保存(作爲Outlook.MailItem)項。它沒有用在代碼中。

後來手動運行時,代碼仍然忽略傳遞的任何項目,但現在處理olFolder中的所有項目。

試試這個:

Sub Save(item As Outlook.MailItem) 
For Each att In item.Attachments 
    att.SaveAsFile "\\.............\" & att.FileName 
    item.Attachments.Remove 1 
    item.Save 
Next 
End Sub