【VBA】OutlookのタスクをExcelへエクスポートする方法!期間指定もあり!

抽出期間指定でOutlookのタスクをExcelへエクスポートする方法

OutlookのタスクをExcelへエクスポートをしたいときはないでしょうか。

けど、そんな中で悩むことは、

・OutlookのタスクをExcelへエクスポートしたいがやり方がわからない。
・Outlook VBAでOutlookのタスクをExcelへエクスポートしたいがやり方がわからない。

ですよね。

今回はそんなお悩みを解決する
抽出期間指定でOutlookのタスクをExcelへエクスポートする方法について
まとめます!

OutlookのタスクをExcelへエクスポートする完成イメージ

OutlookのタスクをExcelへエクスポートする完成イメージについて説明をします。

OutlookタスクをExcelへ出力する機能をVBAで作り込み実装していきます。

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

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

①Excelブック(VBA) → タスク一覧ちょうだい → Outlook
②Excelブック ← タスク一覧を出すよ ← Outlook

Excel側のVBAを実行すると、

Outlookuの各タスクの情報が

さくっとExcelのシートへ出力されます!

便利ですね。

早速使ってみましょう。

Outlookのタスクを用意する

まずはOutlookタスクを用意しましょう。


タカヒロ
タカヒロ
すでにタスクがある方は後で設定する期間内に新規作成されたアイテムであるか確認をしてください。

Outlookのタスクのエクスポート先のExcelシートを用意する

次にOutlookタスク出力先のExcelシートを用意しましょう。
Excelブックを新規作成します。

OutlookのタスクををExcelへエクスポートするVBA

VBAを実装する

新規作成したブックへ、VBAを追加します。

VBAの追加手順については「VBAの実装手順」を参考にしてください。

サンプルコードは以下の通りです。

Sub OutlookのタスクをExcelへエクスポートする()

    'Outlook用の定義
    Dim olApp As Outlook.Application
    Dim olNamespace As Outlook.Namespace
    Dim olFolder As Outlook.MAPIFolder
    Dim olConItems As Outlook.Items
    Dim olItem As Object
    
    'Excel用の定義
    Dim wbBook As Workbook
    Dim wsSheet As Worksheet
    
    Dim lnContactCount As Long
    Dim strStart As String
    Dim strEnd As String
    
    'タスク取得の対象期間を指定します。
    strStart = Format("2020/10/1", "yyyy/mm/dd") '開始日を指定
    strEnd = Format("2021/11/30", "yyyy/mm/dd")  '終了日を指定
    
    
    'スクリーンの更新は行われません。
    Application.ScreenUpdating = False
    
    'Excelのブックとワークシートのオブジェクトを設定します。
    Set wbBook = ThisWorkbook
    Set wsSheet = wbBook.Worksheets(1)  '1の場合左端の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 = "重要度"
        .Cells(1, 9).Value = "アラーム設定有無"
        .Cells(1, 10).Value = "アラーム発生日時"
        .Cells(1, 11).Value = "所有者"
        .Cells(1, 12).Value = "EntryID"

        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(olFolderTasks)
    Set olConItems = olFolder.Items

    
    'Restrictメソッドで期間指定して抽出するタスクアイテムを絞り込みます。
    Set olConItems = olConItems.Restrict("[CreationTime] >= '" & strStart & "' And [CreationTime] <= '" & strEnd & "'")

     
    '取得結果を記述する行番号を指定します。2の場合は2行目のセルから開始されることになります。
    lnContactCount = 2
    
    'メモアイテムを1件づつ取り出し、各値をシートへ出力していきます。
    For Each olItem In olConItems
            With olItem
                Cells(lnContactCount, 1).Value = .Subject  '件名
                Cells(lnContactCount, 2).Value = .Body  '本文
                Cells(lnContactCount, 3).Value = .CreationTime  '作成日
                Cells(lnContactCount, 4).Value = .LastModificationTime  '修正日
                Cells(lnContactCount, 5).Value = .StartDate  'タスクの開始日
                Cells(lnContactCount, 6).Value = .DueDate  'タスクの期限
                Cells(lnContactCount, 7).Value = .PercentComplete  '進捗率
                Cells(lnContactCount, 8).Value = .Importance  '重要度
                Cells(lnContactCount, 9).Value = .ReminderSet  'アラーム設定有無。 trueの場合はアラームあり。Falseはアラーム無し。
                Cells(lnContactCount, 10).Value = .ReminderTime  'アラームが発生する日時
                Cells(lnContactCount, 11).Value = .Owner  '所有者
                Cells(lnContactCount, 12).Value = .EntryID  'タスクアイテムの識別子

            End With
            lnContactCount = lnContactCount + 1
    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

VBAを設定する

VBAを設定していきましょう。

タスク取得の対象期間を指定します。
サンプルでは作成日が”2020/10/1″から”2021/11/30″までとしています。

strStart = Format(“2020/10/1”, “yyyy/mm/dd”) ‘開始日を指定
strEnd = Format(“2021/11/30”, “yyyy/mm/dd”) ‘終了日を指定

VBAを実行する

VBAを実行しましょう。

はい!Outlookのタスクの各内容が

Excelへエクスポートされていますね!

VBAの説明

OutlookのタスクををExcelへエクスポートするVBAの内容について説明をします。

まず、Excelへエクスポートされる値の項目について、以下の通りとなっています。

項目名 プロパティ 説明
件名 Subject タスクのタイトル名です。
本文 Body タスクの本文となります。
作成日 CreationTime タスクを新規作成した日時が入ります。
修正日 LastModificationTime タスクを修正した日時が入ります。
タスクの開始日 StartDate タスクの開始日です。
タスクの期限 DueDate タスクの期限です。
進捗率 PercentComplete 進捗率です。
重要度 Importance 重要度です。
アラーム設定有無 ReminderSet アラーム設定有無を示します。 trueの場合はアラームあり。Falseはアラーム無し。
アラーム発生日時 ReminderTime アラームが発生する日時です。
所有者 Owner 所有者です。
EntryID EntryID タスクアイテムの識別子が入ります。編集の時にアイテムを特定する時などに利用します。

Excelのブックとワークシートのオブジェクトを設定します。
1の場合左端の1番目のシートが対象となります。

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 = “EntryID”

Outlookオブジェクトを設定し、MAPI名前空間を介してOutlookの連絡先一覧を取得します。

Set olApp = New Outlook.Application
Set olNamespace = olApp.GetNamespace(“MAPI”)

タスクを対象にします。

Set olFolder = olNamespace.GetDefaultFolder(olFolderNotes)

Restrictメソッドで期間指定して抽出するタスクアイテムを絞り込みます。

Set olConItems = olConItems.Restrict(“[CreationTime] >= ‘” & strStart & “‘ And [CreationTime] <= ‘” & strEnd & “‘”)

取得結果を記述する行番号を指定します。2の場合は2行目のセルから開始されることになります。

lnContactCount = 2

タスクアイテムを1件づつ取り出し、各値をシートへ出力していきます。

For Each olItem In olConItems
With olItem
Cells(lnContactCount, 1).Value = .Subject ‘件名
Cells(lnContactCount, 2).Value = .Body ‘本文
Cells(lnContactCount, 3).Value = .CreationTime ‘作成日
Cells(lnContactCount, 4).Value = .LastModificationTime ‘修正日
Cells(lnContactCount, 5).Value = .StartDate ‘タスクの開始日
Cells(lnContactCount, 6).Value = .DueDate ‘タスクの期限
Cells(lnContactCount, 7).Value = .PercentComplete ‘進捗率
Cells(lnContactCount, 8).Value = .Importance ‘重要度
Cells(lnContactCount, 9).Value = .ReminderSet ‘アラーム設定有無。 trueの場合はアラームあり。Falseはアラーム無し。
Cells(lnContactCount, 10).Value = .ReminderTime ‘アラームが発生する日時
Cells(lnContactCount, 11).Value = .Owner ‘所有者
Cells(lnContactCount, 12).Value = .EntryID ‘タスクアイテムの識別子End With
lnContactCount = lnContactCount + 1
Next olItem

VBAの実装手順

実装手順は以下の通りです。

「開発」タブ>「Visual Basic」を押します。

「Visual Basic Editor」にて、[Project1] > [Microsoft Outlook Objects] の ThisOutlookSessionをダブルクリックします。

右ペインのコードエリアへ、VBAコードを貼り付けて保存します。

こちらで完了です。

VBAを実行する

では早速VBAの実行をしてみましょう。

①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。

②処理がされたことが確認できれば完了です。

さいごに

いかがでしょうか。

今回は、
抽出期間指定でOutlookのタスクをExcelへエクスポートする方法について
まとめました。

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



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

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



タカヒロ

タカヒロ
実質無料で読めるExcelVBA本についてまとめました。
もしVBA本購入を検討されていたら、どれだけお得か確かめてみてください。

【¥0】実質無料のExcelVBAおすすめ本25選!初級~中級まで網羅!

コメントを残す

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