もくじ
抽出期間指定で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″までとしています。
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 wsSheet = wbBook.Worksheets(1)
書き込み先のセルを指定します。また1行目にタイトルを記述します。
.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 olNamespace = olApp.GetNamespace(“MAPI”)
タスクを対象にします。
Restrictメソッドで期間指定して抽出するタスクアイテムを絞り込みます。
取得結果を記述する行番号を指定します。2の場合は2行目のセルから開始されることになります。
タスクアイテムを1件づつ取り出し、各値をシートへ出力していきます。
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へエクスポートする方法について
まとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す