###### tags: `その他` `VBA` # メール保存 ``` Sub save_mail() Dim myNameSpace As Outlook.NameSpace Dim myFolder As Outlook.Folder Dim item As Variant Dim saveDir As String Dim docPath As String Dim WSH As Variant Dim RE As Variant Dim strPattern As String Dim exeYM As String Dim wName As String wName = "作業者名" Set WSH = CreateObject("WScript.Shell") Set RE = CreateObject("VBScript.RegExp") ' ユーザのドキュメントのパスを取得 docPath = WSH.SpecialFolders("MyDocuments") & "\" Set myNameSpace = Application.GetNamespace("MAPI") ' 送信済みアイテムを取得 Set myFolder = myNameSpace.GetDefaultFolder(5) ' 処理対象の年月を入力 exeYM = InputBox("処理対象の年月を4ケタデ入力しろ", "年月") ' 検索パターン strPattern = "^【業務..】フレキシブルワーク (" & exeYM & "\d\d).+$" ' 送信メール分ループ For Each item In myFolder.Items Debug.Print CStr(item) With RE .Pattern = strPattern .IgnoreCase = True .Global = True ' 正規表現によるマッチング Set reMatch = .Execute(CStr(item)) If reMatch.Count > 0 Then ' ディレクトリの存在確認 saveDir = docPath & "フレキシブルワーク\Mail\" & reMatch(0).SubMatches(0) & "_" & wName If Dir(saveDir, vbDirectory) = "" Then ' なければ作成 MkDir saveDir End If ' ファイル保存 item.SaveAs saveDir & "\" & CStr(item) & ".msg" End If End With Next End Sub ``` ## 参考 【Outlook VBA】Outlook VBAのオブジェクトについて https://extan.jp/?p=1459 Outlook/VBA: メールをボタン1つで指定フォルダに保存するマクロ http://pineplanter.moo.jp/non-it-salaryman/2018/04/05/outlook-saveto-folder/ 【VBA入門】フォルダを作成する方法 https://programming-study.com/technology/vba-folda/ 特殊フォルダを取得する http://officetanaka.net/excel/vba/tips/tips107.htm 正規表現によるマッチング http://officetanaka.net/excel/vba/tips/tips38.htm