【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 件のコメント

  • 返信遅くなり申し訳ございません。
    返信ありがとうございます!
    ちょっとそれで試してみたいと思います!
    また不明点あれば宜しくお願い致します!

  • とても便利で業務に活用させて頂いてます!
    ありがとうございます。
    1点質問させて下さい。
    上記内容にて出力させる事が出来ましたが、一部、「(件名)-個別の会議」「(件名)-個別の予定」となっている分に関して読み込む事が出来ませんでした・・・
    (スケジュール内のアイテムを開き、上部青枠に記載されている部分です)
    これが”AppointmentItem”に該当しない為か分かりませんが、「個別の~」も一緒に読み込むようにすることは可能でしょうか?
    ご教授頂けますと幸いです。

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

      「-個別の~」とついているアイテムを取得する件につきまして、おそらく追加フォルダ側のアイテムになるかと存じますので、
      以下の記事を参考に検証いただけますでしょうか。
      https://extan.jp/?p=3370

      設定例としては以下のようになります。
      Set olFolder = olNamespace.GetDefaultFolder(olFolderCalendar).Folders(“個別の予定”)
      この場合は規定の予定表の配下にある「個別の予定」フォルダが対象となりますが、規定の予定表以外のフォルダである場合は
      GetDefaultFolderメソッドでは拾えませんので、その点ご了承ください。

  • いただいた修正コード適応して、無事に所望の結果を出力できるようになりました。
    早速の対応ありがとうございました。

  • 2023年4月6日 11:26 PM
    に回答いただいたものです。
    その節は対応ありがとうございました。

    「返信する」からうまく返信画面が表示されないので、
    再度「コメントを残すから」投稿しています。

    当方の事情
    複数のグループ会社があり、外部会社(扱い)のメンバー分は今回修正いただいたコードで
    正しくメールアドレスを取得することができました。
    ところが、内部(扱い)分が、
    /o=ExchangeLabs/ou=Exchange Administrative Group,,,
    と出力されてしまっている状況です。

    ざっくり調べたところ、
    「LegacyExchangeDNが表示されている状況」のようです。
    修正コードのうち、elseの部分
    Else
    Cells(lnContactCount, 6).Value = .Organizer
    End If
    が動作していません。(ブレークポイント設定してもこのElseの処理で止まりません)

    この部分が、元の通り、.Organizer(表示名)を表示させるためには
    どのようにコード修正すればよいでしょうか?
    御指南いただけると助かります。

    内部(扱い)分であれば、表示名からメールアドレスにすることは当方でも何とかできそうです。

    ご面倒おかけしますが、ご対応のほどよろしくお願いします。

    レス太

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

      LegacyExchangeDNとなっているところをOrganizerプロパティに置き換える件につきまして、
      LegacyExchangeDNの固有の文字列が含んでいるかどうかを判定すれば振り分けが可能かと存じます。
      以下サンプルとなりますが、InStr関数の条件のところは適宜調整の上ご確認いただければと存じます。

      Dim objRecipient As Object
      For Each objRecipient In .Recipients
      If .Organizer = objRecipient.Name And InStr(objRecipient.Address, “ou=Exchange”) = 0 Then
      Cells(lnContactCount, 6).Value = objRecipient.Address
      Exit For
      Else
      Cells(lnContactCount, 6).Value = .Organizer
      End If
      Next

  • 回答ありがとうございました。
    回答を参考に改めて、コードを解読してみます。
    また、質問すると思います、その時はよろしくお願いします。

  • ‘Outlook用の定義
    Dim olApp As Outlook.Application
    Dim olNamespace As Outlook.Namespace
    Dim olFolder As Folder
    Dim olConItems As Outlook.Items
    Dim olItem As AppointmentItem

    ”—————————————-
    “Dim olApp As Outlook.Application”
    コードに使用する変数がこれでいいのか不安…

    ”—————————————-
    Dim olFolder As Folder

    このコードだけ”Outlook.”は必要ないんですか?

    ”—————————————-
    “Namespace”の”MailItem”の使い分けが不明

    ”—————————————-
    ”Excelの定義_オブジェクト”

    Dim wbBook As Workbook
    Dim wsSheet As Worksheet

    これで十分
    ”—————————————-
    変数の意味

    “Dim strDummy As String ”
    “Dim objAppt As AppointmentItem”
    ”—————————————-
    wsSheet.Activate
    のコードの意味
    ”—————————————-
    Set olItem = olConItems.Find(“[End] = “”” &

    strStart & “”””)

    ‘Findで検索すると期間範囲外の余計なものまでヒットしてしまうので、再度フィルタリ

    ングする

    手順がよくわかりませんでした。
    コードの説明を小学生レベルで説明お願いします
    ”—————————————-
    TypeName(olItem) = “AppointmentItem”
    サイトで説明がありましたが、納得できないので説明お願いします。

    あと”AppointmentItem”のダブルコーテーションの意味もお願いします
    ”—————————————-
    If olItem.Start >= strStart And olItem.End < strEnd Then
    条件式がわかりませんでした。
    ''—————————————-
    Set olItem = olConItems.FindNext

    コードの意味が理解できなかったので詳細に説明お願いします。
    ''—————————————-
    Sub Outlookの予定をExcelに取り込む_期間指定()

    【参考にしたコード】

    ''——-初期設定——-''
    ''—-cellsの列幅—-

    Columns("A:B").ColumnWidth = 45
    Columns("C:D").ColumnWidth = 16
    Columns("E").ColumnWidth = 5
    Columns("F").ColumnWidth = 9
    Columns("G:H").ColumnWidth = 5

    Dim lnContactCount As Long
    Dim strDummy As String ''use?

    ''————————

    '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

    'スクリーンの更新は行われません。
    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

    olConItems.Sort "[start]"

    Dim objAppt As AppointmentItem
    Dim strStart
    Dim strEnd

    strStart = Format(Date, "yyyy/mm/dd") '抽出する予定の開始日を指定
    strEnd = Format(Date, "yyyy/mm/dd") '抽出する予定の終了日を指定
    strEnd = DateAdd("m", 2, strEnd) ' 1m追加

    'Findメソッドで期間指定して抽出する予定を絞り込む
    Set olItem = olConItems.Find("[End] = “””

    & 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

    • ご質問につきまして、以下にご回答いたします。

      このコードだけ”Outlook.”は必要ないんですか?
      ⇒検証の際にマッチしない型があったので汎用的に使えるFolderのみの方を指定していますが、通常利用であればOutlookを付けても問題ないかと思います。

      “Namespace”の”MailItem”の使い分けが不明
      ⇒“Namespace”は直訳すると名前空間といい、いわゆる住所みたいなものです。OutlookApplicationオブジェクトの”MAPI”という名前空間を指定しています。
      ”MailItem”は1件のメールアイテムを指します。予定アイテムであればAppointmentItemとなります。
      関係としてはOutlook>MAPI Namespace>規定フォルダ>メール/予定>アイテム(MailItem/AppointmentItem)のような形になります。

      wsSheet.Activateのコードの意味
      ⇒Excelシートを選択し表示させる内容になります。

      ‘Findで検索すると期間範囲外の余計なものまでヒットしてしまうので、再度フィルタリングする
      手順がよくわかりませんでした。
      ⇒Findメソッドで検索すると、指定した条件以外のものも含まれてしまう不具合があったので、別の方法で再度フィルタリングしています。

      あと”AppointmentItem”のダブルコーテーションの意味もお願いします。
      ⇒ダブルコーテーションでくくる理由は文字列として認識させるためです。

      If olItem.Start >= strStart And olItem.End < strEnd Then 条件式がわかりませんでした。 ⇒取得した予定アイテムの開始日と終了日が指定期間内であるかどうかを判定しています。 Set olItem = olConItems.FindNext コードの意味が理解できなかったので詳細に説明お願いします。 ⇒Findメソッドの次の検索をFindNextメソッドで実行します。条件に合致した予定アイテムをolItemへセットしています。 OutlookのVBAは独自要素が多いのでわかりにくいですね。 仕様だとおもっていただければ幸いです。

  • VBAの記事ありがとうございます。
    さっそくですが、質問をまとめてきたのでよろしくお願いいたします。

  • コメントを残す

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

    CAPTCHA ImageChange Image