Excel のデータをもとに繰り返しの会議出席依頼を送信するマクロ


Excel のデータをもとに会議出席依頼を送信するマクロのコメントにて以下のご要望をいただきました。


こんにちは、現在excelで会議案内作成ツールを作成しており、こちらを参考にしています。

初心者の質問になるかもしれませんが、会議案内の設定について、いくつか質問させてください。

1,宛先の設定について、必須出席者、任意出席者の設定をするにはどのように追記すればよいでしょうか。
なお、宛先はこちらの例と同じくexcel内のデータを参照したいです。

2,会議案内を定期的なアイテムにするための例文を知りたいです。
例えば毎週火曜日、開始日は2015/5/21,終了日未定としたとき、どのように記載するのでしょうか。


まず、宛先の必須出席者や任意出席者の設定をするには、出席者を追加する際に Recipient 型の変数として Add の結果を受け取り、そのオブジェクトの Type プロパティに olRequired (必須出席者)、olOptional (任意出席者)、olResource (リソース) のいずれかを設定します。

また、定期的なアイテムとして作成するには、会議アイテムの GetRecurrencePattern メソッドで RecurrencePattern オブジェクトを取得し、繰り返しパターンや開始日、終了日などを設定します。
こちらの設定は多少複雑なので詳細については以下の MSDN ページをご参照ください。

   RecurrencePattern オブジェクト (Outlook)(機械翻訳)

以前のマクロにちょっと手を加えて、定期的な予定や任意出席者の指定をできるようにしました。
Excel の表は以下のようなものを想定しています

セル番地 A B C D E F G H
1 出席者1 出席者2 出席者3
2 開始時 終了時 件名 場所 繰り返し 終了日 User1 User2 User3
3 2015/8/1 9:00 10:00 単一の予定 会議室1
4 2015/8/5 9:00 10:00 毎週水曜終了未定 会議室2
5 2015/8/1 10:00 11:00 8月の平日 会議室2 月火水木金 2015/8/31

上記の表で選択しているセルの行をもとに会議出席依頼を作成する Excel のマクロは以下の通りです。

' ここをトリプルクリックでマクロ全体を選択できます。
Public Sub SendMeetingRequest2()
    Const MEMBER_MAX = 3 ' メンバーの数
    Dim arrWeek: arrWeek = Array("日", "月", "火", "水", "木", "金", "土")
    Dim olkApp 'As Outlook.Application
    Dim objAppt 'As Outlook.AppointmentItem
    Dim r As Integer
    Dim i As Integer
    ' 会議出席依頼のもとになる予定アイテムを作成
    Set olkApp = CreateObject("Outlook.Application")
    Set objAppt = olkApp.CreateItem(1) ' olAppointmentItem
    ' 予定の日時や件名、場所を設定
    r = Application.ActiveCell.Row
    objAppt.Start = CDate(Cells(r, 1) & " " & CDate(Cells(r, 2)))
    objAppt.End = CDate(Cells(r, 1) & " " & CDate(Cells(r, 3)))
    objAppt.Subject = Cells(r, 4)
    objAppt.Location = Cells(r, 5)
    ' 予定を会議に変更
    objAppt.MeetingStatus = 1 ' olMeeting
    ' 繰り返しの予定かを確認
    If Cells(r, 6) <> "" Then
        Dim objRecur 'As RecurrencePattern
        ' 繰り返しパターンの作成
        Set objRecur = objAppt.GetRecurrencePattern()
        With objRecur
            ' 毎週繰り返す
            .RecurrenceType = 1 ' olRecursWeekly
            ' 繰り返しパターンの確認
            For i = 0 To 6
                If InStr(Cells(r, 6), arrWeek(i)) > 0 Then
                    .DayOfWeekMask = .DayOfWeekMask Or (2 ^ i)
                End If
            Next
            .PatternStartDate = Cells(r, 1)
            .StartTime = Cells(r, 2)
            .EndTime = Cells(r, 2)
            ' 終了日の記載があれば設定
            If Cells(r, 7) <> "" Then
                .PatternEndDate = Cells(r, 7)
            End If
        End With
    End If
    ' セルの値が空白以外のユーザーを出席者に追加
    For i = 1 To MEMBER_MAX
        If Cells(r, 7 + i) <> "" Then
            Dim objRec 'As Recipient
            Set oRec = objAppt.Recipients.Add(Cells(2, 7 + i))
            ' セルの値が ○ なら必須出席者、それ以外なら任意出席者
            If Cells(r, 7 + i) = "○" Then
                oRec.Type = 1 ' olRequired
            Else
                oRec.Type = 2 ' olOptional
            End If
        End If
    Next
    ' 会議出席依頼を表示し、送信
    objAppt.Recipients.ResolveAll
    objAppt.Save
    objAppt.Display
    objAppt.Send ' 環境によっては実行時エラーとなるため、その場合は削除して手動で送信
End Sub

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

広告

Excel のデータをもとに繰り返しの会議出席依頼を送信するマクロ」への2件のフィードバック

  1. お世話になります。
    いつも参考にさせていただいております。
    こちらの「Excel のデータをもとに繰り返しの会議出席依頼を送信するマクロ」で、「場所」と「繰り返し」の間に、「内容」(会議出席依頼の本文部分)を追加したいのですが、ご教示いただけますでしょうか。
    Outlook2013、Excel2013を使用しております。
    何卒よろしくお願いいたします。

  2. たびたび申し訳ございません。上で質問をしたものです。
    過去のコードを参考にさせていただき、objAppt.body を使用することで解決いたしました。
    お騒がせして申し訳ありませんでした。
    これからも、こちらを参考にさせていただきたいと思っています。
    ありがとうございました。

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中