本記事ではMicrosoft Outlookで使えるタスクの開始日を一括で変更するVBAについて解説します。
僕は会社ではOutlookのタスク機能を使ってタスク管理をしています。
なぜOutlookかというと社内ではツールのインストールやWebサイトの閲覧が制限されているからです。Outlookなら気兼ねなく使えるのです。
そんな中タスク管理をしているとOutlookのタスク機能上の期限に間に合わなかったタスクを毎日、今日の日付に手動で修正していました。
こんなんマクロで自動化できるんじゃない?
と思ったので、早速実装してみることにしました。
開始日を今日以外に変更するのもコードを少し変更してもらえれば可能と思いますので、今日以外に変更したい人も見ていってください!
OutlookのVBAマクロでやりたいこと
開始日が以下の条件に合致するタスクの開始日を今日にする。
- Outlookのタスクで開始日が昨日以前になっている
- Outlookのタスクでステータスが完了でない
- Outlookのタスクで開始日が「なし」ではない
タスクの開始日を今日に変更するVBA
OutlookのVBAマクロでやりたいことを実現するために以下のマクロを作成しました。
意外とシンプルにできたつもり!
コメントも書いてるので、わからなければコメントをヒントにしてください。
Sub taskDateEdit()
Dim myNamespace As Outlook.NameSpace 'OutlookへのアクセスAPI用変数
Dim olTaskItem As Outlook.TaskItem 'Outlookタスク
Dim oFolder As Outlook.Folder 'Outlookタスクフォルダー
Dim noDate As Date '開始日がなしで設定されているタスクのために使う変数
Dim n As Integer 'ループ変数
Set myNamespace = Application.GetNamespace("MAPI") 'API
Set oFolder = myNamespace.GetDefaultFolder(olFolderTasks) 'タスクフォルダの設定
noDate = #1/1/4501# '開始日なし=#1/1/4501#が設定されている
For n =1 To oFolder.Items.Count 'タスクアイテム数分ループ
Set olTaskItem = oFolder.Items(n) 'n個目のタスクアイテムを設定
If olTaskItem.status <> 2 And olTaskItem.startDate < noDate And olTaskItme.startDate < Date Then
'「n個目のタスクアイテムのステータスが完了でない」かつ「開始日がなしでない」かつ「開始日が今日以前のタスクアイテム」の場合、次の処理
olTaskItem.startDate = Date 'n個目のタスクアイテムの開始日に今日を設定する
olTaskItem.Save 'n個目のタスクアイテムを保存する
End If
Next
MsgBox "処理完了"
End Sub
もし、上記マクロを実行し、実行時エラー13というエラーが発生した場合、以下を参考にしてください。
おすすめ記事>>>OutlookのVBAマクロによるTaskItem操作で実行時エラー13の解決方法
これで毎日の単純作業から開放されるし、時間が別のことに使える!
一日の作業時間を把握するために今日の作業時間を集計して表示するマクロも作っていますので合わせて読んでみてください>>>【Outlook】今日のタスク全体の作業時間を集計するVBAマクロ
まとめ
Microsoft Outlookで使えるタスクの開始日を一括で変更するVBAについてご紹介しました。
VBAは毎日やっている単純作業から開放し、時間を生み出してくれる可能性を持っています。
もし、単純で繰り返しの作業をやっているなと思ったらマクロを検討してみてください。
以下はOutlook関連のおすすめ本です。
Outlookを仕事で使う人は全員読んでもいいと思います。
それくらいおすすめです。
コメント