Outlookで添付ファイルの自動保存を目指して――一応、完成品

メールに添付されて送られてきたPDFファイルを、一つはそのまま、もう一つはファイル名を加工して保存するOutlookのマクロ。OUTLOOK研究所さんをはじめ、多くの先人の知恵を借りて作ったのが下のマクロ。

件名が「ファイルです」となっているメールに対して、添付ファイルを保存する。

 

 

Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)

 

Dim i As Integer

Dim c As Integer

Dim colID As Variant

 

If InStr(EntryIDCollection, ",") = 0 Then

SaveAttachments EntryIDCollection

 

Else

colID = Split(EntryIDCollection, ",")

For i = LBound(colID) To UBound(colID)

SaveAttachments colID(i)

Next

End If

 

End Sub

 

 

Private Sub SaveAttachments(ByVal strEntryID As String)

 

Const SAVE_PATH = " C:\Users\XXX\Documents \FF\"

 

Const SAVE_PATH2 = " C:\Users\XXXX\Documents\FN\"

 

Dim objFSO As Object

Dim objMsg As Object

Dim objAttach As Attachment

Dim FileName1 As String

Dim FileName2 As String

 

Dim n As Long

Dim letter As String

 

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objMsg = Application.Session.GetItemFromID(strEntryID)

 

If Not objMsg.Subject Like "*ファイルです*" Then Exit Sub

 

For Each objAttach In objMsg.Attachments

 

With objAttach

 

FileName1 = objAttach.FileName

 

FileName2 = ""

 

For n = 1 To Len(FileName1)

letter = Mid(FileName1, n, 1)

If IsNumeric(letter) = True Then

FileName2 = FileName2 & letter

End If

Next

 

FileName1 = SAVE_PATH & FileName1

FileName2 = SAVE_PATH2 & FileName2 & ".pdf"

 

.SaveAsFile FileName1

.SaveAsFile FileName2

 

End With

 

Next

 

Set objMsg = Nothing

Set objFSO = Nothing

 

End Sub

 

OUTLOOK研究所さんのサンプルとの主な違いは、保存するファイルが2つあることと、ファイル名は番号と日付がついており、重複することは原則ないため、同じファイル名が既にあった場合、上書きしないように改めて番号をふる、という部分を削ったこと。

一応、マクロとしては望んだとおりに動いてくれている。良かった、よかった。