OUTLOOK VBA ある日付の複数のアカウントの予定(グループスケジュール)をすべてエクスポートもしくは印刷する


たとえば会社で会議室や社用車の予約をOUTLOOKの予定表の機能で管理している場合があります。
しかし、この会議室や社用車が多いと、どうしても一覧性にかけてしまいます。
しかもOUTLOOKの標準の印刷では一度に一アカウントしかできません。
そこでCSVに開始日時が特定の日の予定をRTF、CSVに出力するVBAを作りました。

使い方

出力したい予定表の設定と検索条件(フィルター文字列)の決定

  1. 出力したい予定表の表示 Outlookを起動し、出力したい(グループ)スケジュール表の候補を検索して表示し、さらにチェックを入れて実際の表示させておくこと(出力したい期間を視認するため、出力したい日付の部分を表示させた方がよい)参考(個人の場合)複数の予定表を同時に表示する参考(法人等の組織)Outlook のグループ スケジュールの使用方法
  2. フィルターの設定 指定したい日付の区間をsFilterに定める。

指定した日の午前零時以降の開始日時のものを取得する。として検索をかける。(restrict)

"[Start] >= '" & Format(#11/28/2017#, "yyyy/MM/dd") & "'"

最初は必ずこうなる 日付は日付リテラル形式といいナンバー記号 月/日/年 ナンバー記号で囲む。午前零時からなのでFormatの表示形式は yyyyy/MM/dd Mが大文字。
次に AND形式で終端を決める。
たとえば11/28だけなら29日の零時より前に開始日時があるから

& " AND [Start] < '" & Format(#11/29/2017#, "yyyy/MM/dd") & "'"

とする ANDの前には必ずスペースが入る。たとえば期間にしたい場合、11月29日を含むのなら

& " AND [Start] < '" & Format(#11/30/2017#, "yyyy/MM/dd") & "'

を追加する。

  1. 出力したいファイル名の指定 Const consStrListFile = "C:\hoge\OutlookSchedule(AppointimentItem)ListUTF8.txt"
  2. 出力するアカウントのリスト Const constrAccountList = "C:\hoge\ScheduleExpAccList.txt"
  3. 出力ファイルの場所 Const consstrSaveDrive = "C:\hoge\"
  4. 出力したい予定表の確認 Step1 Blockでイミディエイトに希望のするアカウントが表示されているか確認する Step2 Arに出力したいアカウント名の配列を代入する。Step1でイミディエイトWindowにArray式を作ってあるため、それが正しければそれを代入するか、修正して代入する。 ちなみにサンプルコードはとあるインターナショナルレスキューがOutlookを使っていた場合を想定