2016-05-04 60 views
0

這是我到目前爲止有:展望VBA保存多個附件,不同名稱

Public Sub saveAttachtoDisk(itm As Outlook.MailItem) 
Dim objAtt As Outlook.Attachment 
Dim saveFolder As String 
saveFolder = "P:\ME\TEST\" 
Dim dateFormat 
dateFormat = Format(Now, "yyyy.mm.dd") 
For Each objAtt In itm.Attachments 
     If InStr(objAtt.FileName, "ASDFA ADSF.pdf", vbTextCompare) > 0 Then 
     objAtt.SaveAsFile saveFolder & dateFormat & " ASDF ASDF.pdf" 
     ElseIf InStr(objAtt.FileName, "GASD.pdf", vbTextCompare) > 0 Then 
     objAtt.SaveAsFile saveFolder & dateFormat & " ASDF ADSF ADD.pdf" 
     ElseIf InStr(objAtt.FileName, "ASDF AD.pdf", vbTextCompare) > 0 Then 
     objAtt.SaveAsFile saveFolder & dateFormat & " ASDF ASDF.pdf" 
     ElseIf InStr(objAtt.FileName, "ASDF AS.pdf", vbTextCompare) > 0 Then 
     objAtt.SaveAsFile saveFolder & dateFormat & " asd asdf.pdf" 
     Else 
     objAtt.SaveAsFile saveFolder & "Caught" 
    End If 
    Set objAtt = Nothing 
Next 
End Sub 

我用隨機字母只是爲了隱私。我試圖讓outlook使用規則和VBA將電子郵件附件自動保存爲特定名稱,並在前面加上日期。我在這裏做錯了什麼?

+0

什麼是你所得到的結果呢?你收到錯誤還是顯示不正確? – GibralterTop

+0

什麼都沒有發生。沒有任何東西可以保存。該規則正在運行並將該郵件標記爲已讀。如果有幫助,該規則特定於我的名字,因此我只是將電子郵件轉發給自己,然後讓其運行以查看是否保存了附件。它運行VBA中項目1下的腳本。該腳本在模塊2(刪除模塊1,所以我認爲這就是爲什麼它是2)。 –

回答

0

我的猜測是你沒有寫入P:\ME\TEST\的權限,或者你沒有進入你的If語句保存。

你要設置你的If線是一個> 0

If InStr(objAtt.DisplayName, "BBB AAA.pdf") > 0 Then 

如果任何字符是比其他名字的第一個位置,那麼就不會去If內。當然,這也可能是你想要的行爲。

您可以測試如果不是If statments內擊中加入:

Else 
    objAtt.SaveAsFile saveFolder & "not caught.pdf" 
End If 

如果你沒有得到添加Else代碼後保存,嘗試保存到本地文件夾。然後,如果您仍然沒有得到任何保存,MailItem沒有任何附件。

編輯: 應該是這樣的:

VBA Editor

+0

我有權限,我試過> 0並把測試,看看它是否沒有擊中,什麼也沒有保存。有什麼建議麼?我不知道有什麼辦法讓它受到打擊。這是一個客戶端唯一的規則,我試圖保存到服務器,如果這可能有所幫助。 –

+0

您是否在For Each循環中設置了一個斷點,以查看它是否在您的For Each中? – GibralterTop

+0

我該怎麼做?我真的是全新的VBA,所以我非常感謝幫助! –