Excel のデータをもとに会議の変更通知やキャンセル通知を送信するマクロ


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


はじめまして。このサイトを活用させていただき、いろいろ勉強させていただいています。
このサイトを参考に、Outlook2007(Exchange環境)で会議出席依頼を発信するExcelマクロツールを作成しましたが、発信した会議出席依頼を、件名と開催時刻と終了時刻をキーに特定して、キャンセルの上、キャンセル通知を発信するマクロをご教示お願いいたします


はじめまして。「Excel のデータをもとに会議出席依頼を送信するマクロ」 を使用させていただいてますが以下の内容もできないでしょうか?
1.エクセル記載の日付、開始時間、終了時間、件名、場所が一致する会議予定を削除、又はキャンセル通知を送信する
2.エクセル記載の日付、開始時間、終了時間、件名、場所が一致する会議予定の日付、又は開始/終了時間を変更 する
ご教授頂けると助かります。よろしくお願い致します。



Outlook で変更通知を送信するには、元の会議アイテムに変更を加えて、改めて Send メソッドを実行します。
また、キャンセル通知を送信するには、元の会議アイテムの MeetingStatus を olMeetingCanceled (5) に変更し、Send メソッドを実行します。
以下のような Excel シートをもとに会議の変更およびキャンセルを行う Excel のマクロを作成しました。

  A B C D E F G H
1 日付 開始時刻 終了時刻 件名 場所 変更日付 変更開始 変更終了
2 2016/10/03 10:00 11:00 会議A 会議室1 2016/10/03 11:00 12:00
3 2016/10/04 11:00 12:00 会議B 会議室2      

変更日付が設定されている会議は変更通知を送信し、設定されていない会議はキャンセル通知を送信して削除します。
マクロは以下の通りです。

' ここをトリプルクリックでマクロ全体を選択できます。
Public Sub ModifyCancelMeetingRequest()
    Const olFolderCalendar = 9
    Const olMeetingCanceled = 5
    Dim olkApp 'As Outlook.Application
    Dim fldCalendar 'As Outlook.Folder
    Dim objAppt 'As Outlook.AppointmentItem
    Dim r As Integer
    Dim dtAppt As Date
    Dim strStart As String
    Dim strEnd As String
    Dim strSubject As String
    Dim strLocation As String
    '
    Set olkApp = CreateObject("Outlook.Application")
    Set fldCalendar = olkApp.Session.GetDefaultFolder(olFolderCalendar)
    r = 2
    With Sheet1
        ' 日付のセルに値がある間繰り返す
        While .Cells(r, 1) <> ""
            ' セルで指定された条件の予定を検索
            Set objAppt = fldCalendar.Items.Find( _
                "[開始日] = '" & .Cells(r, 1) & " " & FormatDateTime(.Cells(r, 2), vbShortTime) & "' AND " & _
                "[終了日] = '" & .Cells(r, 1) & " " & FormatDateTime(.Cells(r, 3), vbShortTime) & "' AND " & _
                "[件名] = '" & .Cells(r, 4) & "' AND " & _
                "[場所] = '" & .Cells(r, 5) & "'")
            If Not objAppt Is Nothing Then
                If .Cells(r, 6) = "" Then ' 変更日付がなければ削除
                    ' 会議をキャンセル状態とする
                    objAppt.MeetingStatus = olMeetingCanceled
                    ' キャンセル通知を送信
                    objAppt.Send
                    ' キャンセルした会議を削除
                    objAppt.Delete
                Else    ' 変更日付があれば変更
                    objAppt.Start = .Cells(r, 6) & " " & FormatDateTime(.Cells(r, 7), vbShortTime)
                    objAppt.End = .Cells(r, 6) & " " & FormatDateTime(.Cells(r, 8), vbShortTime)
                    ' 変更通知を送信
                    objAppt.Send
                End If
            End If
            r = r + 1
        Wend
    End With
End Sub

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中