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を使うと、同じ言葉の繰り返しを避けることができるらしい。私の作るマクロ程度では、まだまだなくてもかまわないものに思えるが、まあ勉強。遊び。やってみよう。

 



f:id:chamcham5628:20200908082313j:image