Outlookで添付ファイルの自動保存を目指して―― 微修正
objFSO って変数、要らないんじゃないか?と思って外してみたら、無事に動いた。まあ、当然だ。どうして気がつかなかった、というレベル。
ということで、外した版が以下。保存するフォルダ名をちょっと隠したけど、それでも動くはず。動いてください。
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:UsersXXXDocuments FF"
Const SAVE_PATH2 = " C:UsersXXXDocuments FN"
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 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
End Sub
次に試してみたいのが、withの使い方。
With objAttach
FileName1 = objAttach.FileName
としているが、これは
FileName1 = .FileName
ではいけないのか?
withを使うと、同じ言葉の繰り返しを避けることができるらしい。私の作るマクロ程度では、まだまだなくてもかまわないものに思えるが、まあ勉強。遊び。やってみよう。