Outlook VBA

メールボックスのパンクを回避するため、確認したメールをファイル名「受信日時_件名.msg」でフォルダに保存したいあなたへ

                    
                    Sub メール保存()
                    
                    '① 開発タブの表示
                    '  [ファイル]-[オプション]-[リボンのユーザー設定]-[「開発」タブにチェックを入れる]-[OK]
                    '② マクロを有効にする
                    '  [ファイル]-[オプション]-[トラストセンター]-[トラストセンターの設定]-[マクロの設定]-[すべてのマクロを有効にする]
                    '  ※ メールの添付ファイルを開いたときに、悪意のあるマクロが実行されないよう
                    '    マクロ実行後は、マクロを無効にする設定に戻す。
                    '③ VBEを開く(Alt + F11)➡ 標準モジュールを開く(Alt → I → M)➡このテキストをコードウィンドウに貼り付け
                    '④ 保存したいメールを開いた状態で、マクロを実行(F5)
                    
                        Dim myItem As Outlook.Inspector
                        Dim objItem As Object
                    
                        Set myItem = Application.ActiveInspector
                        Set objItem = myItem.CurrentItem
                    
                        '受信日時取得
                        Dim fnTimestamp As String
                        On Error Resume Next
                            fnTimestamp = Format(objItem.ReceivedTime, "yyyy.mm.dd(aaa)hhnn_")
                            If Err.Number <> 0 Then
                                ' エラーが発生したら受信日時ではなく最終更新日時とする'
                                fnTimestamp = Format(objItem.LastModificationTime, "yyyy.mm.dd(aaa)hhnn_")
                                Err.Clear
                            End If
                        On Error GoTo 0
                        
                        '件名取得
                        strName = objItem.Subject
                        strName = Replace(strName, " ", "")
                        strName = Replace(strName, ":", ":")
                        strName = Replace(strName, "\", "¥")
                    
                        'メールを指定のフォルダにファイル名「受信日時_件名.msg」で保存
                        objItem.SaveAs "C:\Users\...\メール保存" & "\" & fnTimestamp & strName & ".msg"
                                        '★先頭の「" "」内に、保存するフォルダのパスをエクスプローラからコピー・ペーストしてください★
                                        
                    '★Itemメソッド.受信メール内の各データを取得・設定するプロパティ
                    ' .ReceivedTime 受信日時
                    ' .LastModificationTime 最終更新日時
                    ' .SenderName 送信者の表示名
                    ' .SenderEmailAddress 送信者の電子メールアドレス
                    ' .Subject 件名
                    
                    '★保存終了後、メールの削除は自分でやります。
                    
                    End Sub
                    
                

参考文献・リンク

  1. Satoshi「非IT企業に勤める中年サラリーマンのIT日記」Outlook/VBA: メールをボタン1つで指定フォルダに保存するマクロ,2018/04/05.
    https://pineplanter.moo.jp/non-it-salaryman/2018/04/05/outlook-saveto-folder/
  2. あほくす「ahox.jp」選択中のアイテムを受信時刻と件名のファイル名で保存する: Outlook VBA,2020/08/25.
    http://ahox.jp/prog/2020-08_saveas-selected-mails-with-timestamp-outlook-vba.html
  3. 国本温子・緑川吉行&できるシリーズ編集部「できる逆引きExcel VBAを極める勝ちワザ700、Excel2016/2013/2010/2007対応」, インプレス, 2016年6月21日.