作者: kkeennken 時間: 2018-1-4 16:08 標題: [請教Excel VBA]從MSG文件中提取附件並改名
本帖最後由 kkeennken 於 2018-1-4 16:12 編輯
求CHing賜教
如何在MSG文件提取附件時,為每個附件的name加上MSG文件的name。
例如,Temp1.msg中,有AA.pdf and BB.pdf。Temp2.msg中,有CC.pdf and DD.pdf。
得出:Temp1_AA.pdf, Temp1_BB.pdf, Temp2_CC.pdf, Temp2_DD.pdf。
以下VBA Code,
可以從"C:\Users\PC\Downloads\excel_vba\1"中的所有附件,
提取到"C:\Users\PC\Downloads\excel_vba\2"。
但附件的name沒有改變。
Public Sub Extract_Attachments_From_Outlook_Msg_Files()
Dim outApp As Object
Dim outEmail As Object
Dim outAttachment As Object
Dim msgFiles As String, sourceFolder As String, saveInFolder As String
Dim fileName As String
msgFiles = "C:\Users\PC\Downloads\excel_vba\1\*.msg" 'CHANGE - folder location and filespec of .msg files
saveInFolder = "C:\Users\PC\Downloads\excel_vba\2" 'CHANGE - folder where extracted attachments are saved
If Right(saveInFolder, 1) <> "\" Then saveInFolder = saveInFolder & "\"
sourceFolder = Left(msgFiles, InStrRev(msgFiles, "\"))
On Error Resume Next
Set outApp = GetObject(, "Outlook.Application")
If outApp Is Nothing Then
MsgBox "Outlook is not open"
Exit Sub
End If
On Error GoTo 0
fileName = Dir(msgFiles)
While fileName <> vbNullString
'Open .msg file in Outlook 2003
'Set outEmail = outApp.CreateItemFromTemplate(sourceFolder & fileName)
'Open .msg file in Outlook 2007+
Set outEmail = outApp.Session.OpenSharedItem(sourceFolder & fileName)
For Each outAttachment In outEmail.Attachments
outAttachment.SaveAsFile saveInFolder & outAttachment.fileName
Next
fileName = Dir
Wend
End Sub
作者: clio 時間: 2018-1-4 19:30
outAttachment.SaveAsFile saveInFolder & fileName & "_" & outAttachment.fileName
作者: kkeennken 時間: 2018-1-4 23:13
本帖最後由 kkeennken 於 2018-1-4 23:39 編輯
outAttachment.SaveAsFile saveInFolder & fileName & "_" & outAttachment.fileName
clio 發表於 2018-1-4 19:30
得左,THX CHing
作者: web_base 時間: 2018-4-24 22:03
clio, 勁。
作者: bongbong3481 時間: 2018-4-24 22:06
留名學野, 呢個POST 既CODE 好有用
作者: myricky 時間: 2018-4-25 14:58
提示: 作者被禁止或刪除 內容自動屏蔽
作者: bongbong3481 時間: 2018-4-25 19:59
回覆 6# myricky
我都系咁整緊,不過d code 上網抄人
作者: kkeennken 時間: 2018-4-26 11:10
本帖最後由 kkeennken 於 2018-4-26 11:45 編輯
與其用Excel vba係msg抽取file, 不如直接係outlook行 rule同vba, 當收到email後自動save attached file係某 ...
myricky 發表於 2018-4-25 14:58
我地要嘅功能都唔同
我係:將舊有嘅MSG文件,抽出附件。
你係:新收到嘅email後,自動抽出附件。
______________________
另外,outlook行 rule同vba,可唔可以自動為每個附件的name加上MSG文件的name?
______________________
但,我覺得新收到嘅email,都係行excel VBA比較好。
將每次需要嘅.MSG文件save as哂,再改好左名先,編好號碼,再抽出附件,附件就已經跟左號碼,分好左類,比較方便登記及紀錄。
作者: bongbong3481 時間: 2018-4-26 20:16
回覆 8# kkeennken
我覺得,可以2個方法都採用, 新EMAIL抽附件,可以算是將來式, 舊有EMAIL抽附件是現在進行式
作者: myricky 時間: 2018-4-27 13:18
提示: 作者被禁止或刪除 內容自動屏蔽
作者: kkeennken 時間: 2018-4-28 08:32
人手做,
.MSG文件要派號碼。
作者: myricky 時間: 2018-4-30 19:45
提示: 作者被禁止或刪除 內容自動屏蔽
作者: xiao 時間: 2018-7-19 10:50
回覆 6# myricky
請問有沒有code snippet 可參看
謝謝
作者: myricky 時間: 2018-7-19 11:29
提示: 作者被禁止或刪除 內容自動屏蔽
作者: xiao 時間: 2018-7-19 11:43
回覆 14# myricky
謝謝你
作者: xiao 時間: 2018-7-19 11:43
謝謝你

