メールを受信するたびにメモに変換して保存するマクロ


コメントにて以下のようなご要望をいただきました。

  • メールを受信するたびにメモに変換したい。
  • 変換するメールは特定のアカウント宛に送られたメールだけにする
  • 変換後、メモの総数が 100 を超えないよう古いメモから削除する

以下のようなマクロで上記のご要望が満たせると思います。

' ここをトリプルクリックでマクロ全体を選択できます。
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
    Const SAVE_ADDRESS = "test@example.com" ' このアドレスに送信されたメールのみをメモに保存
    Const MAX_MEMO = 99 ' メモフォルダのアイテムの最大値
    Dim objMail
    Dim objRecip As Recipient
    Dim bFound
    Dim fldNote As MAPIFolder
    Dim colNotes As Outlook.Items
    Dim objNote As NoteItem
    Set objMail = Session.GetItemFromID(EntryIDCollection)
    bFound = False
    ' あて先に特定のメールアドレスが含まれるかどうかの確認
    For Each objRecip In objMail.Recipients
        If objRecip.Address = SAVE_ADDRESS Then
            bFound = True
        End If
    Next
    If bFound Then
        Set fldNote = Session.GetDefaultFolder(olFolderNotes)
        ' 最大数を超えるメモは古いものから削除
        If fldNote.Items.Count >= MAX_MEMO Then
            Set colNotes = fldNote.Items
            colNotes.Sort "更新日時", False
            colNotes(1).Delete
        End If
        ' メールの内容をメモに保存
        Set objNote = fldNote.Items.Add
        With objMail
            objNote.Body = .Subject & " From:" & .SenderName & " Date:" & Format(.ReceivedTime,"YY/MM HH:NN") & vbCrLf & .Body
        End With
        objNote.Save
    End If
End Sub

マクロの登録方法やメニューへの追加について

メールを受信するたびにメモに変換して保存するマクロ」への1件のフィードバック

  1. 別記事のコメントにてご依頼者の方から本文に埋め込む日時のフォーマットの指定があったため、記事を修正しました。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中