最近有個需求坪创,ERP系統(tǒng)會自動發(fā)很多csv附件到我郵箱,我需要把這些附件上傳到FTP服務(wù)器姐赡,服務(wù)器會把這些csv的數(shù)據(jù)寫到另外一個系統(tǒng)的數(shù)據(jù)庫莱预。
每次大概有30個郵件,每個郵件有一個附件项滑,而且附件的名字都一樣锁施,是一個csv的文件,我每次需要手動的把附件另存為一個新名字存到本地杖们,然后FTP上傳悉抵。
每次大概要浪費我10分鐘時間,而且毫無價值摘完。
于是我就寫了一個VBA的自動處理程序姥饰,幾秒搞定。
如果你也有類似的需求孝治,或者把附件再進行寫入數(shù)據(jù)庫列粪,或者附件是Excel,需要整合到數(shù)據(jù)庫谈飒,可以再在服務(wù)器開發(fā)一個自動處理機器人岂座,設(shè)置每5分鐘檢測一下是否有新文件,如果有就寫入數(shù)據(jù)庫或添加到一個總Excel表格杭措。這些VBA 或 C#都可以完美處理费什。
話說把大象裝進冰箱分三個步驟:
第一步:
打開Outlook - Option - Trust Center - Truster Center Settings - Macro Settings - 勾選Enable all macros。
打開Outlook - Option - Trust Center - Truster Center Settings - Email Security - 勾選Allow script in shared folders 和 All script in public folders
重點:重啟Outlook手素,我因為沒重啟outlook鸳址,浪費了很多時間瘩蚪。
第二步:
編寫宏程序,按下Alt+F11稿黍,創(chuàng)建新項目疹瘦,把程序copy進去,文件夾地址改一下
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Public Sub SaveAttach(MyItem As Outlook.MailItem)
? ? SaveAttachment MyItem, "C:\Data\MailAttached\"
? ? 'MsgBox "附件已保存"
End Sub
Private Sub SaveAttachment(ByVal Item As Outlook.MailItem, path, Optional condition = "*")
? ? Dim olAtt As Outlook.Attachment
? ? Dim i As Integer
? ? Dim dateFormat
? ? dateFormat = Format(Now, "yyyy-mm-dd hh-mm-ss")
? ? If Item.Attachments.Count > 0 Then
? ? ? ? For i = 1 To Item.Attachments.Count
? ? ? ? ? ? Set olAtt = Item.Attachments(i)
? ? ? ? ? ? If olAtt.FileName Like condition Then
? ? ? ? ? ? ? ? olAtt.SaveAsFile path & dateFormat & "_" & olAtt.FileName
? ? ? ? ? ? End If
? ? ? ? Next
? ? End If
? ? Set olAtt = Nothing
? ? Sleep 1000
End Sub
如下圖:保存
解釋一下巡球,因為我每個附件名字都相同言沐,用時間重命名,只能到秒這個級別酣栈,所以我每次處理都Sleep 1秒呢灶,否則有可能會覆蓋掉上一個文件。
第三步:
制作運行規(guī)則钉嘹,這一步比較簡單,只放一張圖片鲸阻,仔細(xì)看每個設(shè)定