【Excel VBA】一瞬でExcelワークシートへOutlookの予定表を取り込む方法

Outlookの予定表に登録されている予定をExcelシートへ一覧表にしたいことはないでしょうか。

例えば月次集計で定例会実施件数など活動履歴を集計したいときなどです。

そんな時に悩むことは、

・Outlookの予定表を件名の他詳細情報も含め取得したいが方法がわからない
・VBAでOutlookの予定表情報を一括取得したいが方法がわからない

ですよね。

今回はそんなお悩みを解決する、

・VBAでOutlook予定表に登録されている予定をExcelへ出力する方法
・VBAで期間指定でOutlook予定表に登録されている予定をExcelへ出力する方法

についてまとめます!

予定一覧をExcelへ出力するイメージ

今回のOutlook予定表を出力するVBAの実行イメージについて説明をします。

まずVBAの実装先は、出力結果を書き込む先のExcel側となります。

Excelブック側からVBAを実行し以下の流れで処理が行われます。

Excelブック(VBA) → 予定一覧ちょうだい → Outlook
Excelブック ← 予定一覧を出すよ ← Outlook

Excel側のVBAを実行すると、

ExcelのワークシートにOutlookの予定表情報が書き込まれます!

カンタンですね。

早速VBAを実装をして動かしてみましょう!

Excel VBAからOutlookを操作するための下準備

①まずExcelを起動し、「開発」タブをクリックします。

②VBEの画面が開いたら、メニューから「ツール」>「参照設定」を選択します。

③「Microsoft Outlook XX.X Object Library」を探してチェックボックスにチェックし「OK」をクリックします。

以上です。

VBAを実装する

続いてVBAを実装します。

今回VBAは以下の通りとなります。
なお、VBAは前回の「【Excel VBA】カンタン!Outlookの連絡先をExcelワークシートへ取り込む」をベースに、連絡先部分を予定表へ変更をおこなったものとなります。

Sub Outlookの予定表を取り込む()

    'Outlook用の定義
    Dim olApp As Outlook.Application
    Dim olNamespace As Outlook.Namespace
    Dim olFolder As Folder
    Dim olConItems As Outlook.Items
    Dim olItem  As AppointmentItem
    
    'Excel用の定義
    Dim wbBook As Workbook
    Dim wsSheet As Worksheet
    
    Dim lnContactCount As Long
    
    Dim strDummy As String
    
    'スクリーンの更新を停止します。
    Application.ScreenUpdating = False
    
    'Excelのブックとワークシートのオブジェクトを設定します。
    Set wbBook = ThisWorkbook
    Set wsSheet = wbBook.Worksheets(1)
    
    '書き込み先のセルを指定します。また1行目にタイトルを記述します。
    With wsSheet
        .Range("A1").CurrentRegion.Clear
        .Cells(1, 1).Value = "件名"
        .Cells(1, 2).Value = "場所"
        .Cells(1, 3).Value = "開始日時"
        .Cells(1, 4).Value = "終了日時"
        .Cells(1, 5).Value = "予定の本文"
        .Cells(1, 6).Value = "予約者"
        .Cells(1, 7).Value = "必須出席者"
        .Cells(1, 8).Value = "任意出席者"

        With .Range("A1:Z1")
            .Font.Bold = True
            .Font.ColorIndex = 10
            .Font.Size = 11
        End With
    End With
    
    wsSheet.Activate
    
    'Outlookオブジェクトを設定し、MAPI名前空間を介してOutlookの予定表を取得します。
    Set olApp = New Outlook.Application
    Set olNamespace = olApp.GetNamespace("MAPI")
    Set olFolder = olNamespace.GetDefaultFolder(olFolderCalendar)
    Set olConItems = olFolder.Items
            
    '取得結果を記述する行番号を指定します。2行目のセルから開始されることになります。
    lnContactCount = 2
    
    For Each olItem In olConItems
    Debug.Print TypeName(olItem)
        If TypeName(olItem) = "AppointmentItem" Then
            With olItem
                Cells(lnContactCount, 1).Value = .Subject
                Cells(lnContactCount, 2).Value = .Location
                Cells(lnContactCount, 3).Value = .Start
                Cells(lnContactCount, 4).Value = .End
                Cells(lnContactCount, 5).Value = .Body
                Cells(lnContactCount, 6).Value = .Organizer
                Cells(lnContactCount, 7).Value = .RequiredAttendees
                Cells(lnContactCount, 8).Value = .OptionalAttendees

            End With
            lnContactCount = lnContactCount + 1
        End If
    Next olItem
    
    'オブジェクトを解放します。
    Set olItem = Nothing
    Set olConItems = Nothing
    Set olFolder = Nothing
    Set olNamespace = Nothing
    Set olApp = Nothing

            
    'スクリーンの更新を再開します。
    Application.ScreenUpdating = True
    
    MsgBox "Outlook予定表の取り込みが完了しました!", vbInformation
    
End Sub

実装手順は以下の通りです。今回はExcel側にこのVBAを実装します。
①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。

②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。

③右ペインのウインドウに上記のVBAを入力します。

こちらで完了です。

VBAを実行する

①「開発」タブの「VBA」をクリックし「Outlookの予定先を取り込む」を選択し、「実行」をクリックします。

②Excelのワークシートに書き込まれたら完成です!

なお、実行にあたり予定の登録数が多い場合は処理に時間がかかることがありますのでご注意ください。

今回のVBAについて説明

予定表のリストはolFolderCalendarというメンバーに格納されています。
コードではolItemオブジェクトのタイプ名が”AppointmentItem”だった場合に処理を進めるようにしています。

If TypeName(olItem) = “AppointmentItem” Then

また連絡先の項目はプロパティに格納されており、今回は以下の項目に絞っています。
件名:Subject
場所:Location
開始日時:Start
終了日時:End
予定の本文:Body
予約者:Organizer
必須出席者:RequiredAttendees
任意出席者:OptionalAttendees

予定表のすべて項目は以下となっていますので、必要に応じて取捨選択頂ければと思います。

【参考】AppointmentItem オブジェクト (Outlook)

名前 説明
attachments 指定されたアイテムのすべての添付ファイルを表す Attachments オブジェクトを返します。
autoresolvedwinner Outlook アイテムに関連付けられている請求先情報を表す文字列を設定または返します。
BillingInformation 連絡先の記念日を示す日付を設定または返します。読み取り/書き込み。
Body Outlook アイテムの本文を表す文字列型 (String) の値を返すか設定をします。 値の取得と設定が可能です。
BusyStatus 予定のユーザーのビジー状態を示す**OlBusyStatus** 定数を設定または返します。 値の取得と設定が可能です。
Categories Outlook アイテムに割り当てられた分類項目を表す文字列を設定または返します。 値の取得と設定が可能です。
Companies Outlook アイテムに関連付けられている会社の名前を表す文字列を設定または返します。 値の取得と設定が可能です。
AutoResolvedWinner ブール値アイテムが自動競合解決の勝者であるかどうかを返します。読み取り専用です。
BillingInformation Outlook アイテムに関連付けられている請求先情報を表す文字列を設定または返します。読み取り/書き込み。
ConversationTopic Outlook アイテムのテーマスレッドのトピックを表す文字列を返します。 読み取り専用です。
Creationtime Outlook アイテムの作成日時を示す日付を返します。 読み取り専用です。
Duration 期間 (分単位) を示す長整数型 (Long ) の値を取得または設定します。 値の取得と設定が可能です。
End 終了日時を示す日付を設定または返します。 値の取得と設定が可能です。
EndInEndTimeZone タイムゾーンで表される予定の終了日時を表す日付値を設定を取得または取得します。 値の取得と設定が可能です。
EndUTC 世界協定時刻 (UTC) 形式で表現される予定の終了日時を表す日付値を設定を取得または取得します。 値の取得と設定が可能です。
LastModificationTime Outlook アイテムが最後に変更された日付と時刻を指定する日付を返します。 読み取り専用です。
Location 予定の特定のオフィスの場所を表す文字列を設定または返します (たとえば、建物1の部屋1または Suite 123)。 値の取得と設定が可能です。
Meetingstatus 予定アイテムがリンクされている会議ワークスペースの URL を表す文字列型 (string ) の値を返します。 読み取り専用です。
MeetingWorkspaceURL 連絡先の勤務先住所の番地部分を表す文字列を設定または返します。読み取り/書き込み。
Organizer 予定の開催者の名前を表す文字列を返します。 読み取り専用です。
PropertyAccessor 連絡先に使用する電子名刺の種類を指定する定数 OlBusinessCardType を返します。値の取得のみ可能です。
BusinessFaxNumber オブジェクトのプロパティの作成、取得、設定、および削除をサポートする**PropertyAccessor** オブジェクトを返します。 読み取り専用です。
Recipients Outlook アイテムのすべての受信者を表す Recipients コレクションを取得します。 読み取り専用です。
ReminderMinutesBeforeStart アラームが予定の開始前に発生する時間を分単位で示すを設定または返します。 値の取得と設定が可能です。
ReminderSet アイテムのアラームが設定されている場合は、 Trueを指定するブール値を設定します。 値の取得と設定が可能です。
ReplyTime 予定の返信時刻を示す日付を設定または返します。 値の取得と設定が可能です。
AppointmentItem 会議の予定に必要な出席者名のセミコロンで区切られた文字列を返します。 値の取得と設定が可能です。
Resources 会議のリソース名のセミコロンで区切られた文字列を返します。 値の取得と設定が可能です。
ResponseRequested 現在のユーザーの予定の会議の全体的な状態を示す**olresponsestatus** クラスの定数を取得します。 読み取り専用です。
Responsestatus Outlook アイテムに関連付けられている会社の名前を表す文字列を設定または返します。読み取り/書き込み。
Size Outlook アイテムのサイズ (バイト単位) を示す値を返します。 読み取り専用です。
Start 開始日時を示す日付を設定または返します。 値の取得と設定が可能です。
Startinstarttimezone 予定の開始日時を表す日付値を設定を取得または取得します。 値の取得と設定が可能です。
Starttimezone 予定の開始時刻のタイムゾーンに対応する**TimeZone** 値を設定または返します。 値の取得と設定が可能です。
Subject Outlook アイテムの件名を示す 文字列 を返すか、設定します。 値の取得と設定が可能です。

追記:Find、FindNextメソッドで期間指定し、抽出する予定を絞り込む

前回連絡先出力の時にご紹介したFind、FindNextメソッドを利用して、抽出する予定を絞り込む機能を追加しましたので、追記いたします。

【Outlook VBA】Outlook連絡先をVBAのFindメソッドで検索してみよう

コードは以下の通りです。

Sub Outlookの予定表を取り込む_期間指定Ver()

    'Outlook用の定義
    Dim olApp As Outlook.Application
    Dim olNamespace As Outlook.Namespace
    Dim olFolder As Folder
    Dim olConItems As Outlook.Items
    Dim olItem  As AppointmentItem
    
    'Excel用の定義
    Dim wbBook As Workbook
    Dim wsSheet As Worksheet
    
    Dim lnContactCount As Long
    
    Dim strDummy As String
    
    'スクリーンの更新は行われません。
    Application.ScreenUpdating = False
    
    'Excelのブックとワークシートのオブジェクトを設定します。
    Set wbBook = ThisWorkbook
    Set wsSheet = wbBook.Worksheets(1)
    
    '書き込み先のセルを指定します。また1行目にタイトルを記述します。
    With wsSheet
        .Range("A1").CurrentRegion.Clear
        .Cells(1, 1).Value = "件名"
        .Cells(1, 2).Value = "場所"
        .Cells(1, 3).Value = "開始日時"
        .Cells(1, 4).Value = "終了日時"
        .Cells(1, 5).Value = "予定の本文"
        .Cells(1, 6).Value = "予約者"
        .Cells(1, 7).Value = "必須出席者"
        .Cells(1, 8).Value = "任意出席者"

        With .Range("A1:Z1")
            .Font.Bold = True
            .Font.ColorIndex = 10
            .Font.Size = 11
        End With
    End With
    
    wsSheet.Activate
    
    'Outlookオブジェクトを設定し、MAPI名前空間を介してOutlookの予定表を取得します。
    Set olApp = New Outlook.Application
    Set olNamespace = olApp.GetNamespace("MAPI")
    Set olFolder = olNamespace.GetDefaultFolder(olFolderCalendar)
    Set olConItems = olFolder.Items
    
    '取得結果を記述する行番号を指定します。2行目のセルから開始されることになります。
    lnContactCount = 2
    
    Dim objAppt As AppointmentItem
    Dim strStart As String
    Dim strEnd As String
    
    strStart = Format("2019/09/16", "yyyy/mm/dd") '抽出する予定の開始日を指定
    strEnd = Format("2019/09/17", "yyyy/mm/dd")  '抽出する予定の終了日を指定
    strEnd = DateAdd("d", 1, strEnd)   ' 1日追加
    
    'Findメソッドで期間指定して抽出する予定を絞り込む
    Set olItem = olConItems.Find("[End] < """ & strEnd & """ AND [Start] >= """ & strStart & """")
    
    While TypeName(olItem) = "AppointmentItem"
        'Findで検索すると期間範囲外の余計なものまでヒットしてしまうので、再度フィルタリングする
        If olItem.Start >= strStart And olItem.End < strEnd Then
            With olItem
                Cells(lnContactCount, 1).Value = .Subject
                Cells(lnContactCount, 2).Value = .Location
                Cells(lnContactCount, 3).Value = .Start
                Cells(lnContactCount, 4).Value = .End
                Cells(lnContactCount, 5).Value = .Body
                Cells(lnContactCount, 6).Value = .Organizer
                Cells(lnContactCount, 7).Value = .RequiredAttendees
                Cells(lnContactCount, 8).Value = .OptionalAttendees
            End With
            lnContactCount = lnContactCount + 1
        End If
        Set olItem = olConItems.FindNext
    Wend
    
    
    'オブジェクトを解放します。
    Set olItem = Nothing
    Set olConItems = Nothing
    Set olFolder = Nothing
    Set olNamespace = Nothing
    Set olApp = Nothing
    
            
    'スクリーンの更新を再開します。
    Application.ScreenUpdating = True
    
    MsgBox "Outlook予定表の取り込みが完了しました!", vbInformation
    
End Sub

今回は2019/09/16~2019/09/17までを指定しました。
期間を変更する箇所は以下となります。

strStart = Format(“2019/09/16“, “yyyy/mm/dd”) ‘抽出する予定の開始日を指定
strEnd = Format(“2019/09/17“, “yyyy/mm/dd”) ‘抽出する予定の終了日を指定

VBAから「Outlookの予定表を取り込む_期間指定Ver」を指定し、実行してみましょう。

はい!絞り込めましたね。

やはり絞り込み機能はあったほうが良いです。

さいごに

いかがでしょうか。

今回は

・VBAでOutlook予定表に登録されている予定をExcelへ出力する方法
・VBAで期間指定でOutlook予定表に登録されている予定をExcelへ出力する方法

についてまとめました。

まだまだ便利な方法がりますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。








44 件のコメント

  • 大変便利に使用させていただいております。

    さて、
    Cells(lnContactCount, 6).Value = .Organizer
    にて予約者の「表示名」は取得できていますが、
    その予約者のメールアドレスを取得することは可能でしょうか?
    色々プロパティをいじってみてるのですが、うまくいきません。
    そもそもメールアドレスは取得できないのでしょうか?

    • いつもご利用ありがとうございます。

      予約者のメールアドレスを取得する件につきまして、RecipientsコレクションのAddressプロパティに含まれていれば可能かと存じます。
      コードを以下のように変更し検証いただきたくお願いいたします。

      ■変更前
      Cells(lnContactCount, 6).Value = .Organizer

      ■変更後
      Dim objRecipient As Object
      For Each objRecipient In .Recipients
      If .Organizer = objRecipient.Name Then
      Cells(lnContactCount, 6).Value = objRecipient.Address
      Exit For
      Else
      Cells(lnContactCount, 6).Value = .Organizer
      End If
      Next

  • お世話なります。回答ありがとうございます。
    追加予定表の取り込みをさっそくトライしてみます。

  • とても便利で活用させて頂いてます。ありがとうございます。
    1点質問があります。
    Outlookに新しく追加した予定表※から、このマクロでデータ抽出したいのですが、「オブジェクトのタイプ名」の指定の仕方を教えて頂けないでしょうか。
    ※例えば、「予定表」と分けた「実績」

    >予定表のリストはolFolderCalendarというメンバーに格納されています。
    >コードではolItemオブジェクトのタイプ名が”AppointmentItem”だった場合に処理を進めるようにしています。

    • いつもご利用ありがとうございます。

      Outlookに新しく追加した予定表(例として「実績」)を対象にデータを抽出する件ですが、
      以下の記事の内容が該当いたしますので、よろしければご参考いただきたくお願いいたします。

      https://extan.jp/?p=3370

      例:追加フォルダ名「実績」(パス:\\<メールボックス>\予定表\実績\)の場合
      Set olFolder = olNamespace.GetDefaultFolder(olFolderCalendar).Folders(“実績”)

      また予定表に登録したアイテムであればオブジェクトタイプは”AppointmentItem”でよいかと思います。
      まずは上記フォルダによる指定で予定のデータが抽出可能であるかご確認いただきたくお願いいたします。

  • グループアドレスの件、ご回答いただき誠にありがとうございます。
    回答いただいた内容ではエクセルのシート2に抽出したいメンバーのアドレスを手動で打ち込むとのことでしたが、Outlookのグループアドレスに登録されている各メンバーのメールアドレスを抽出して、エクセルのシート2に自動で格納されるシステムを構築したいと考えています。(グループアドレスのメンバーが頻繁に入れ替わるため、手動ではなく自動で抽出できるように模索しております…)
    何かいい案をご存知であれば、アドバイスいただけますでしょうか。

  • 大変貴重な情報をありがとうございます。
    今回ご紹介いただいた手法は手動でメールアドレスを打ち込むものでしたが、Outlookのグループメールに登録されたメンバー各自のメールアドレスのスケジュールを一括してインポートする方法をご存知でしょうか?

    • いつもご利用ありがとうございます。

      グループメンバのスケジュールを一括してインポートする方法については
      以下の記事にて近い内容がございますので、ご参照頂ければと存じます。
      https://extan.jp/?p=2802

      配布グループなどグループに登録されたメンバーのメールアドレスを手動で抽出し、
      Excelの2つ目のシートにメールアドレスを入力すれば、そのリスト分のスケジュールを取得することが可能です。

      なお、実行アドレスのアクセス権は対象予定表のすべての項目を読み取れる権限になるようにしてください。

      よろしくお願いいたします。

  • VBA未経験者ですが、大変参考にさせていただきました。
    1点質問させていただきたいのですが、指定した期間内で、subjectもしくはbodyに特定のキーワードがあるもののみ取り込むことは可能でしょうか。

    • いつもご利用ありがとうございます。
      またVBA未経験者大歓迎です。

      subjectもしくはbodyに特定のキーワードがあるもののみ取り込む方法につきまして、
      InStr関数(文字列を検索して見つかった位置を返す処理)にsubject、bodyプロパティと特定キーワードを指定し、判定条件にすることで実現可能です。

      例えば期間指定Verのサンプルコードに条件を追加する場合は以下の箇所を変更します。

      ■変更前
      If olItem.Start >= strStart And olItem.End < strEnd Then

      ■変更後
      If olItem.Start >= strStart And olItem.End < strEnd And InStr(olItem.Subject, “実績報告”) Then
      ※Bodyにしたい場合はSubjectと差し替えてください。
      ※”実績報告”が特定キーワードに該当しますので、適宜変更してください。

      よろしくお願いいたします。

  • いつも有益な情報をありがとうございます。
    Outlook予定表の取り込みが完了しました!というポップアップは出るのですが、実際に予定表が取り込まれません。どのような原因が考えられるでしょうか。

    • いつもご利用ありがとうございます。

      予定表が取り込まれない原因といたしまして、以下が考えられます。
      ①1シート目以外のシートを参照している
      ②期間指定版にて指定した期間の範囲に予定が存在しない
      ③取得対象アカウントが規定になっていない

      ①については出力先が1シート目となりますので1シート目をご確認ください。
      ②については、以下の期間を予定が存在する範囲に変更をしてください。
      strStart = Format(“2019/09/16”, “yyyy/mm/dd”) ‘抽出する予定の開始日を指定
      strEnd = Format(“2019/09/17”, “yyyy/mm/dd”) ‘抽出する予定の終了日を指定

      ③については複数のアカウントを登録している場合の原因となります。
      対象アカウントを既定へ変更頂ければと存じます。

      よろしくお願いいたします。

  • いつも参考にさせていただいております。抽出する予定の開始日と終了日について、コードに直接書き込むのではなく、Excelの特定のセル(たとえばL1セルに開始日、L2セルに終了日)を入力した上でマクロを実行することで、入力した期間のデータが抽出されるようにしたいのですが、どのようなコードを記載すればよいのでしょうか。お手数ですが、お教えいただけると大変助かります。

    • いつもご利用ありがとうございます。

      抽出する予定の開始日と終了日をセルの値から参照するよう変更する件ですが、
      L1セルに開始日、L2セルに終了日とする場合は、

      以下のコードを、
      strStart = Format(“2021/09/11”, “yyyy/mm/dd”) ‘抽出する予定の開始日を指定
      strEnd = Format(“2021/11/1”, “yyyy/mm/dd”) ‘抽出する予定の終了日を指定

      こちらへ変更頂きたくお願いいたします。
      strStart = Format(Range(“L1”).Value, “yyyy/mm/dd”) ‘抽出する予定の開始日を指定
      strEnd = Format(Range(“L2”).Value, “yyyy/mm/dd”) ‘抽出する予定の終了日を指定

  • お世話になります。
    Outlookスケジュールを下記のように運用しています。
    個人用の予定表
    ┗予定表(既定)
    ┗プライベート(新たに作成)
    上記のプライベートのみをExcelワークシートに取り込む場合、どのようにすればよいでしょうか。既定のものしか取り込めないのでしょうか。

    • いつもご利用ありがとうございます。

      追加した予定表の予定情報をExcelへ取り込む方法について確認をすることができました。
      詳細は記事にまとめましたので、よろしければご参照ください。
      【VBA】ExcelへOutlookの追加予定表の予定情報を取り込む方法

      なお、追加した予定表の名前を「プライベート」とする場合は、サンプルコードを以下のようにしていただければと存じます。
      Set olFolder = olNamespace.GetDefaultFolder(olFolderCalendar).Folders(“プライベート”)

      よろしくお願いいたします。

    • いつもご利用ありがとうございます。

      原則として既定の予定表のみが取得の対象となっていますので、追加した予定表は対象外となります。

      ざっと追加した予定表を指定する方法がないか確認しましたが、有力な情報は見当たりませんでした。

      もしありましたら記事へ追記をしたいと思います。

      よろしくお願いいたします。

  • 確認させて頂きました。
    やりたい事がやれそうです。
    VBAをやり始めて3ヵ月が経ちましたが楽しくなって来ました。また、色々と参考にさせて頂きます。
    ありがとうございました。

    • やりたいことが見えてきたということでよかったです!

      作られたVBAが業務に活用されることを願っています。

      よろしくお願いいたします。

  • 大変返信遅れ申し訳ありません。
    とても参考になり早速実装させて頂きました。
    ありがとうございました。
    少し質問させて下さい。
    Conversation IDとEntryIDは会議案内した時点で変わらないものでしょうか。
    現在、ユーザーフォームから打ち合わせ案内とタスク仕事納期を送信し、送信した情報をExcelシートに自動で入力させようと色々参考にさせて作りました。
    Outlook の変更点をExcelシートに反映したいと思っています。
    例えば、欠席したら打ち合わせは必要なしとしてセルに打ち合わせ否と入力させるこんな感じです。
    あっ、質問は、会議の日にちを変更するとIDも変わってしまうのかです。
    IDを照合して会議日が変わった事をExcelシートに反映したいと考えています。
    長々と書きましたが、ご教示お願い致します。

    • ご質問の会議の日にちを変更するとID(ConversationIDとEntryID)は変わるかにつきましては、
      会議を新規登録した時点でIDは発番され、それ以降に案内通知を実施したり、会議の日にちや時間を変更したとしてもIDは変わることはありません。
      EntryIDの取り扱いについてはこちらをご参考頂ければと思います。
      https://extan.jp/?p=2275
      よろしくお願いいたします。

  • 大変便利で使わせて頂いております。
    Excelから会議案内し、予定表をExcelに取得しています。出席者の応答(承諾、仮承諾、辞退、応答なし)も取得したいのですが宜しくお願い致します。

    • いつもご利用ありがとうございます。

      出席者の応答結果を取得する件ですが、ざっと調べたところ、MS側にも載っておらず有力な情報を見つけることはできませんでしたが、
      応答結果のメールから情報を収集すればできそうです。
      具体的には会話ID(ConversationID)と参加者(送信者)のメールアドレス、応答結果を収集し、会議単位でまとめるといった処理となります。
      できましたら別の記事でご紹介したいと思いますので、完成までお時間頂ければと思います。

  • 大変勉強させて頂いています。
    1点なのですが、こちらの予定表の取り込み先を共有予定表などにすることは可能なのでしょうか?
    よくわかっておらず申し訳ございません。教えていただけますか。

  • コード上で日時指定で実行していますが
    Excel上でボタンを押すと先月分のデータが取り込めるような
    マクロも可能なのでしょうか。

    • いつもご利用ありがとうございます。
      先月、今月、翌月分予定表が取り込めるボタンを追加した内容の記事を公開しましたので、よろしければご参照ください。
      https://extan.jp/?p=2421

    • はい、可能となります。
      ボタンに関しては、Excel上にボタン配置してマクロを登録をします。

      先月の月末月初は以下の関数で取得し、値をマクロへ渡します。

      先月の月初 =EOMONTH(TODAY(),-2)+1
      先月の月末 =EOMONTH(TODAY(),-1)

      別の機会にでもサンプルコードを提示したいと思います。

  • 大変便利だと思い活用させていただいています。
    1点教えてほしいのですが上記マクロを組んで抽出したところ、
    定期的な予定(例えば毎週水曜日の会議)が抽出されません。
    これが全て抽出されるようなマクロの組み方を教えていただけませんか?

    • 定期的な予定の情報については、少々難しく、GetRecurrencePattern メソッドを呼び出して、指定された予定に関連付けられている RecurrencePattern オブジェクトを取得する形となります。
      Set objPattern = olItem.GetRecurrencePattern

      次に期間を取得します。
      objPattern.PatternStartDate
      objPattern.PatternEndDate

      最後が難しいのですが、日次、週次、月次、年次パターンを取得します。
      objPattern.RecurrenceType

      頻度 (毎週、隔週、3 週間に 1 度など) の場合は
      objPattern.Interval

      会議のある曜日の場合は
      objPattern.DayofWeekMask

      で取得し、期間とパターンで開催日を導きだす必要があります。

      詳細はこちらをご参照ください。
      https://docs.microsoft.com/ja-JP/previous-versions//ee692908(v=technet.10)?redirectedfrom=MSDN

  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です