2017-04-26 67 views
1

我試圖讓Outlook中的VBA宏,將電子郵件的附件保存到特定的文件夾(每月改變),並添加前一個月的YYYYMM收到的文件名。保存附件

前景規則標識電子郵件標題中包含「NTMR」從一個人。

而當它這樣做,它運行在那裏保存的文件夾中安裝腳本。

所以當宏識別電子郵件的月收到,重要的是爲一個月後面的文件夾中保存。例如:對於DD/04/17接收

電子郵件作爲「這是你的NTMR文件」,它會在201703父文件夾保存文件夾中的文件NTMR - 201703

,這樣的路徑該文件將C:\用戶\ alitalh \下載\測試\ 201703 \源文件\ NTMR 201703

我已經想出了follownig宏 - 請告訴我如何我可以解決它?

Public Sub saveAttachtoDisk(itm As Outlook.MailItem) 
    Dim objAtt As Outlook.Attachment 
    Dim saveFolder As String 
    Dim dateFormat As String 
    saveFolder = "C:\Users\alitalh\Downloads\Test" 
    dateFormat = Format(Now, "yyyymm" - 1, 1) 

    For Each objAtt In itm.Attachments 
     objAtt.SaveAsFile saveFolder & "\" & dateFormat & "\" & "Source Files" & "\" & objAtt.DisplayName & dateFormat 
     Set objAtt = Nothing 
    Next 
End Sub 

我該如何從標題中去掉NTMR並將其放入文件名中?

我的電子郵件之前建立的文件夾另一個宏所以我們並不需要在你的主題行創建另一個文件夾

+0

哪裏NTMR?主題行?或電子郵件正文? – 0m3r

+0

@ 0m3r主題行 – wasimakram101

回答

1

工作與MSDN Split Function

Here is the NTMR file for you按空格分割字符(" ")

代碼示例

Sub Example() 
    Dim Item As Outlook.mailitem 

    Set Item = ActiveExplorer.Selection.Item(1) 

    Debug.Print Item.subject ' Print on Immediate Window (Ctrl+G) 

    Item.subject = Split(Item.subject, " ")(3) 

    Debug.Print Item.subject ' Print on Immediate Window (Ctrl+G) 

End Sub 

你的受試者= (Here)(1)(is)(2)(the)(3)(NTMR)(4)(file)(5)(for)(6)(you)(7)

現在Split(subject line), "space")(3)雖然分配給字符串變量

Dim FileName As String 
FileName = Split(Item.subject, " ")(3) 

更換objAtt.DisplayNameFileName


Dim FileName As String 
For Each objAtt In itm.Attachments 
    objAtt.SaveAsFile saveFolder & "\" & _ 
         dateFormat & "\" & _ 
        "Source Files" & "\" & FileName & dateFormat 
Next 

默認情況下,或者當限制等於-1,Split函數分割在分隔符串的每個匹配的輸入字符串,和在一個數組返回
當Limit參數大於零時,Split函數會在首次出現定界符時分割字符串,並返回一個包含結果子串的數組。
例如,Split("a:b:c", ":") returns the array {"a", "b", "c"}
Split("a:b:c", ":", 2) returns the array {"a", "b:c"}


要獲得比上月嘗試DateAdd Function

Option Explicit 
Public Sub Example() 
    Dim PrevMonth As String 

    PrevMonth = Format(DateAdd("m", -1, Date), "yyyymm") 
    Debug.Print PrevMonth 
End Sub 

個 值得探討在其他環境中一些有用的日期功能包括:DateDiffDatePartDateSerial,日,月,年,並IsDateIsDate(它檢查字符串是否爲有效日期)對於諸如UserForms之類的內容特別有用,您可能希望強制用戶在某個文本框中輸入有效日期。


+0

非常感謝你..將dateFormat工作罰款在我的代碼? – wasimakram101

+0

如何讓我的dateFormat在當前月份之前獲得一個月? – wasimakram101

+0

@ wasimakram101只是月份和年份? - – 0m3r