特定の文字列を件名や本文に含むメールを受信した際に予定を作成するマクロ


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


Exchange 2010のメールボックスにOutlook 2007を接続している環境で、件名または本文に特定のキーワードが含まれるメールを受信したら、マクロ/仕分けルール/アクションアイテムなどを活用して、会議(または予定表)アイテムを自動登録する、ということは実現できないでしょうか。

会議出席者=TO、CCに登録されているメンバ

件名=メールの件名
詳細=メールの本文
時間=受信した時間から24時間後とか

お知恵を拝借できると大変ありがたいと考えています。

可能な範囲でご支援よろしくお願いいたします。


こちらについては、以下のようなマクロで実現可能です。このサンプルでは appointment という文字列を件名や本文に含むメールを受信した場合に、そのメールの件名や本文を使用して受信した時刻の 1 日後から 1 時間の予定を作成し、出席者に会議出席依頼を送信します。検索する文字列は SEARCH_WORD に指定します。

' ここをトリプルクリックでマクロ全体を選択できます。

Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
    Set objItem = Session.GetItemFromID(EntryIDCollection)
    If objItem.MessageClass = "IPM.Note" Then
        Dim msgItem As MailItem
        Set msgItem = objItem
        CreateAppointment msgItem
    End If
End Sub
'
Private Sub CreateAppointment(msgItem As MailItem)
    Const SEARCH_WORD = "appointment"
    Dim strText As String
    Dim objRecip As Recipient
    Dim objNewRecip As Recipient
    '
    strText = msgItem.Subject & vbLf & msgItem.Body
    If InStr(strText, SEARCH_WORD) > 0 Then
        Dim apptItem As AppointmentItem
        Set apptItem = Application.CreateItem(olAppointmentItem)
        apptItem.MeetingStatus = olMeeting
        apptItem.Subject = msgItem.Subject
        For Each objRecip In msgItem.Recipients
            Set objNewRecip = apptItem.Recipients.Add(objRecip.Address)
            objNewRecip.Type = objRecip.Type
            objNewRecip.Resolve
        Next
        apptItem.Body = msgItem.Body
        apptItem.Start = DateAdd("d", 1, Now)
        apptItem.End = DateAdd("h", 1, apptItem.Start)
        apptItem.Send
        apptItem.Save
    End If
End Sub

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

広告

特定の文字列を件名や本文に含むメールを受信した際に予定を作成するマクロ」への5件のフィードバック

  1. 大変お世話になっております。
    マクロ情報のご提供、ありがとうございます。

    頂きましたマクロに関しまして、試行させていただきました。

    受信したメールによって、マクロを実行している本人のメールボックスには予定が作成されることを確認いたしました。
    ただ、マクロを実行しているメールボックス以外のTOやCCに入っているユーザの予定表には予定は作成されません。

    これは、Exchangeメールボックス側に代理人アクセスなどが必要なのか、そもそも他人のメールボックスの予定には登録されない想定であるのか、どちらになるかご教示いただけないでしょうか。

    マクロが後者の場合、登録された予定アイテムは出席者ボタンを押下すると会議出席依頼を送信できるところまでになっておりますので、予定登録後、その予定アイテムを起点に会議出席依頼を自動送付する、という機能をプラスする、ということは可能でしょうか。

    いろいろとお聞きし申し訳ございませんが、引き続きご支援をいただけますと大ありがたいと思っています。

    今後ともどうぞよろしくお願いいたします。

  2. こんにちは。
    VBA初心者です。

    上記コードを「ThisOutlookSeeion」に記載しても、マクロボタンで表示されず選択実行されません。
    Privateを除いて、Sub newmailex()とすればマクロボタンで表示されるようになりますが、実行できません。
    コードを記載する場所がわるいのかとおもい、Module1を作成してコピーしてみましたがやはりマクロボタンに表示されません。

    たぶん基本的なミスなのだとは思うのですが、どのようにしたらよいのでしょうか。
    お手すきなお時間にでも、教えて頂けると助かります。

    • このマクロは、特定の件名や本文を含むメールを受信した際に自動的に実行されるマクロであり、ユーザーが実行させることはできません。
      もし、受信トレイにあるメールに対してこのマクロを実行したいということであれば、マクロを書き換える必要があります。

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中