001 Outlook VBA メール本体と添付資料を一発保存マクロ シンプル版

こんにちは、くのへ@MasazaneKunoheです。

Outlookで便利なコードを作ったと思うので公開します。
完全版はこちら

メール本体と添付資料を一発で保存

コードの機能はこんな感じです

① Outlookメールを開いた状態でこのマクロを起動すると、デスクトップにフォルダが作成され、その中にメール本体と添付資料が一式保存されます。

②ここで、デスクトップに作成されるフォルダ名は、ダイヤログボックスで入力するようにしています。名前を入力すると、今日の日付+名前(入力値)のフォルダが生成されます。メールの受信日や送信日ではなく、実際にマクロを実行した日が書かれます

③メール本体の名前も②で入力した名前になります。

注意!!

メールを開いた状態にする必要があります。

受信ボックスで選択した状態だとダメです。ダブルクリックして開いてからマクロを動かしてね。

コード

コピペで動くと思います。

ただし、strPathだけは自分用に書き直してください。

私のパソコンのデスクトップアドレスを代入するため、
strPath = “C:¥Users¥user¥Desktop¥”
でstrPathにデスクトップのアドレスを代入しています。このアドレスはパソコンによってアドレスが違うはずです。
完全版だと、ここの設定も不要です。)

Sub メール保存()
  Dim objIns As Outlook.Inspector
  Dim objItem As Object
  Dim strName As String
  Dim strPath As String
  Dim objAttachment As Object
  Dim objFSO As Object
  Dim strFile As String
 
  Set objIns = Application.ActiveInspector
  Set objItem = objIns.CurrentItem
  
  strPath = "C:¥Users¥user¥Desktop¥" 'ファイルを保存したい場所のアドレス。最後の¥を忘れずに
  
  strName = InputBox("フォルダ名を記載ください", "フォルダ作成", "フォルダ名")
  strName = Left(Date, 4) & Mid(Date, 6, 2) & Mid(Date, 9, 2) & "_" & strName

  Set objFSO = CreateObject("Scripting.FileSystemObject")
  objFSO.CreateFolder strPath & strName
  
  objItem.SaveAs strPath & strName & "¥" & strName & ".msg"

  With objItem
    For Each objAttachment In .Attachments
        strFile = strPath & strName & "¥" & objAttachment
        objAttachment.SaveAsFile strFile
    Next objAttachment
  End With

End Sub

動作の動画

さらに改善

①名前入力をキャンセルしてもフォルダが作成されてしまうのを改善

このコードは途中で名前入力をキャンセルしてもフォルダが出来ます(笑)
これは簡単に直せるんですが、コードの可読性がほんのちょっと悪くなるため、この記事ではこのバグは放置してます。

修正したものは、こちらの記事を見てください。

②受信ボックスから操作したい

今回は、開いたメールを一発保存する物です。
でも、受信ボックスで選択しているメールを操作したいよね~

これはこちらの記事を見てください。

③SetしたオブジェクトをNothingしておいたほうが良い

Setしたオブジェクト変数は最後にNothingを代入し、中身を消した方が安全です。
これも修正した記事はこちらを見てください。

④デスクトップなどの所定フォルダではなく、選択式にしたい

今回は、デスクトップに一発保存する物です。
でも、保存先を選択式にしたい人もおられると思います
この場合はこちらの記事を見てください。


ではまた別の記事で~
🦅バサバサ~

感想等はツイッターにお願いします。こちら。
くのへスタジオはこちら。
Outlook-VBAコーナーはこちら。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です