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


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


仕事で、係の予定を共有する際に、一覧性を確保したいので、エクセルで予定表を作っています。
ところが、それでは、出席予定者にいちいち同じ内容をOutlookで打ち込み、送付することが必要になって冗長です。
よって、エクセルから、会議開催日時、場所や出席予定者を呼び込みその行の内容から、自動で会議の出席依頼を送付することはできないのでしょうか?

エクセル及びアウトルックは何れも2010です。
なお、エクセルの表は以下のようなものです。

◯エクセルの表

セル番地 A B C D E F G H
1           出席者1 出席者2 出席者3
2 開始時 終了時 会議内容 場所 上田 山口 広池
3 2012/5/10 13:00 15:00 効率化打ち合わせ 山田会館
4 2012/5/11 9:30 11:15 工程会議 所内  

(エクセルの表について)
(1) 1及び2行目がタイトル

(2) 3行目からが、会議の詳細です。(A3セルが「2012/5/10」、B3セルが「13:00」のつもり)
※時間は多分、半角でないとダメと思いますが、時(13)と分(00)を別々の列にする必要があるかどうかもわかりません。

(3) 出席者メンバーは係員なので、3名固定ですが、そのうち、その日の会議出席予定者については◯を打ってます。
例えば、5月10日の会議では、3名全員が出席、5月11日は上田と広池が出席で山口が欠席です。

(4) ここで、例えば3行目にカーソルがあった場合にマクロを起動させると、アウトルックが立ち上がり、3行目の予定、つまり5月10日の予定が
出席者に自動的に送信されるというマクロです。

(5) F2、G2、H2には名前といっても、メールアドレスのエイリアスをいれることとしてます。



会議出席依頼を送信するには、まず予定アイテムを作成して出席者を追加した後、その MeetingStatus を olMeeting (1) に設定して Send する必要があります。
ご要望いただいた処理を Excel のマクロにすると以下のようになります。

' ここをトリプルクリックでマクロ全体を選択できます。
Public Sub SendMeetingRequest()
    Const MEMBER_MAX = 3 ' メンバーの数
    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
    ' セルの値が空白以外のユーザーを出席者に追加
    For i = 1 To MEMBER_MAX
        If Cells(r, 5 + i) <> "" Then
            objAppt.Recipients.Add Cells(2, 5 + i)
        End If
    Next
    ' 会議出席依頼を表示し、送信
    objAppt.Recipients.ResolveAll
    objAppt.Display
    objAppt.Send ' 環境によっては実行時エラーとなるため、その場合は削除して手動で送信
End Sub

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

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

  1. 備品の管理をOUTLOOK2010(Exchange)で行う事になり、こちらのマクロ
    を参考にしようとしたのですが、知識が乏しくなかなか思った通りに
    ならない状況です。

    掲載されているマクロでは「会議出席依頼」を送信する仕組みですが、
    共有設定されているフォルダ(ユーザ?)に「予定」を入れるように
    することは出来ないでしょうか。

    • そのようにすることも可能ですが、おすすめはできません。
      そうしてしまうと、備品の管理用に作成したメールボックスの予定でダブルブッキングが発生する可能性があるからです。
      Exchange Server 2007 以降ではそうした管理のために備品用のメールボックスというものが作成でき、サーバー側で会議出席依頼を自動処理して予定を作成するということが可能ですので、そちらの設定を使ってみてください。

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

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

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

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

  3. 会議出席依頼の宛先、本文のフォームだけ作り、送信はしないようにしたいのですが、どこで構文をきったらいいのでしょうか?
    初心者ですいません

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

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中