本記事ではMicrosoft Outlookで使える今日のタスク全体の作業時間を集計するVBAについて解説します。
僕は会社ではOutlookのタスク機能を使ってタスク管理をしています。
タスク管理をしていると今日1日の作業時間ってどれくらいかかるかな?というのを把握したくなります。次の予定にも響きますからね。
予測時間という項目をOutlookのタスクでは入力することができるので、全部入力してそれらを電卓なりエクセルなりで計算して今日の作業時間を把握していました。
作業時間の集計だけでもマクロで自動化できるんじゃない?
と思ったので、早速実装してみることにしました。
今日だけでなく今月や今週の作業時間を把握したい!という人もコードを少し変更してもらえれば可能と思いますので、指定した期間の作業時間をに変更したい人も見ていってください!
OutlookのVBAマクロでやりたいこと
開始日が以下の条件に合致するタスクの予測時間を集計してお知らせする。
- Outlookのタスクで開始日が今日になっている
- Outlookのタスクでステータスが完了でない
前提条件
本VBAを利用するにあたっての前提条件があります。
予測時間は自分で入力するしかありませんので、予測時間が入力されていることが前提になります。
今日のタスクの作業時間を集計するVBA
OutlookのVBAマクロでやりたいことを実現するために以下のマクロを作成しました。
今回も意外とシンプルにできたつもり!
コメントも書いてるので、わからなければコメントをヒントにしてください。
Sub planTimeTotal()
'outlookのタスクで設定した今日のタスクの予測時間を合計し、どの程度の時間が必要かを確認するマクロです。
Dim myNamespace As Outlook.NameSpace 'OutlookへのアクセスAPI用変数
Dim olTaskItem As Outlook.TaskItem 'Outlookタスク
Dim oFolder As Outlook.Folder 'Outlookタスクフォルダー
Dim n As Integer 'ループ変数
Set myNamespace = Application.GetNamespace("MAPI") 'API
Set oFolder = myNamespace.GetDefaultFolder(olFolderTasks) 'タスクフォルダの設定
For n =1 To oFolder.Items.Count 'タスクアイテム数分ループ
Set olTaskItem = oFolder.Items(n) 'n個目のタスクアイテムを設定
If olTaskItem.status <> 2 And olTaskItem.startDate = Date Then
'「n個目のタスクアイテムのステータスが完了でない」かつ「開始日が今日のタスクアイテム」の場合、次の処理
totalWk = totalWk + olTaskItem.TotalWork 'n個目のタスクアイテムの開始日に今日を設定する
End If
Next
MsgBox "本日の作業予測時間:" & totalWk / 60 & "時間です。" & vbCrLf & "本日の予測時間(分):" & totalWk & "分です"
End Sub
もし、上記マクロを実行し、実行時エラー13というエラーが発生した場合、以下を参考にしてください。
おすすめ記事>>>OutlookのVBAマクロによるTaskItem操作で実行時エラー13の解決方法
時間が把握できるので、予定の目処が立てやすくなった!
タスクの開始日を一括で今日に変更するVBAマクロも作成していますので、あわせて御覧ください>>>【Outlook】タスクの開始日を一括で変更するVBAマクロ
まとめ
Microsoft Outlookで使える今日のタスクの作業時間を集計するVBAについてご紹介しました。
VBAは毎日やっている単純作業から開放し、時間を生み出してくれる可能性を持っています。
もし、単純で繰り返しの作業をやっているなと思ったらマクロを検討してみてください。
以下はOutlook関連のおすすめ本です。
この本のおかげでメールのフィルタルール管理という面倒くさい作業をすることがなくなりました。
Outlookを仕事で使う人は全員読んでもいいと思います。
それくらいおすすめです。
コメント