Board logo

標題: [請教Excel VBA]從MSG文件中提取附件並改名 [打印本頁]

作者: 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

呢PART你係人手做, 定自動做?
myricky 發表於 2018-4-27 13:18


人手做,
.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

google "outlook vba save attachment" 大把例子任你抄.
myricky 發表於 2018-7-19 11:29



    謝謝你





歡迎光臨 電腦領域 HKEPC Hardware (https://www.hkepc.com/forum/) Powered by Discuz! 7.2