« The Importance of the Weekly Review | Main | Wife 1.0 »
Sunday, June 20, 2004
How to Automate Your Weekly Review Process
In my last post, I wrote about The Importance of the Weekly Review. Now I want to show you how to automate this process by entering a series of tasks into Outlook using a simple VBA program. This will enable you to enter the list with a single mouseclick. (If you read my blog regularly, this is an adaptation of my post on Automating Your !Daily Disciplines Task List in Outlook.)
First, make sure that you have Outlook loaded. If you are new to VBA programming or “macros,” as they are sometimes called, start by selecting Tools | Macro | Macros … or just press Alt-F8. Either way, you’ll get a dialog box that looks similar to this:
Type in the phrase “WeeklyReview” (without the quotes). This will open up the VBA editor with the cursor positioned between the Sub and End Sub statements like this: o
Delete everything from the word Sub on the first line to the word Sub on the last line.
Now click here to open a new browser window with the code. Select all of the text (using Ctrl-A), copy it to the Windows clipboard (Ctrl-C), and then go back to the VBA Editor. Now paste the code you copied to the clipboard into the editor window (Ctrl-V).
Your should now be looking at the code in the VBA editor. I have highlighted each of the tasks below in yellow. (You can click on the graphic to enlarge it.) You can modify these if you wish. If you have more Weekly Review tasks than I do, just copy one of the code blocks and paste it into the code. If you have fewer tasks, just delete the code block or comment it out by preceding the line with an apostrophe (actually, the foot mark: ').
Okay, you're almost done. Now close the VBA code window by pressing Alt-F4. Make sure you are now looking at Outlook. To run the basic macro, press Alt-F8, select the WeeklyReview macro and press Enter. All of your WeeklyReview tasks should be instantly entered into Outlook. If you have your tasks grouped by categories, you should have a task pad that looks similar to this:
If you want to really get fancy, you can assign this to an icon on the toolbar. My icon, for example, looks like this:
![]()
It took me about 10 minutes to create using the built-in icon editor that ships with Outlook. To get there, right-click on the Toolbar and select Customize. You will get a dialog box that looks similar to this:
Now follow these steps:
- Select the word Macros in the Categories list box. All your macros will then appear in the Commands list box.
- Select the WeeklyReview macro. (Note: It may be preceded by “Project1,” or some other project name, depending on how many other macros you have and how they are organized.)
- With the left mouse button still depressed, drag the macro onto the tool bar where you want it.
- Now right-click on the macro name on the tool bar.
- If you don’t want to create an icon, just give the button a new name. If you want to create an icon, select Edit Button Image…
Now whenever you click on the button, the program will create the Weekly Review tasks.
June 20, 2004 at 06:00 AM in Getting Things Done, Microsoft Outlook | Permalink
TrackBack
TrackBack URL for this entry:
http://www.typepad.com/services/trackback/6a00d83452682569e200e5505dd4bb8833
Listed below are links to weblogs that reference How to Automate Your Weekly Review Process:
» Automating the GTD Weekly Review from McGee's Musings
A nice example of getting your tools to do more of your work for you. [Read More]
Tracked on Jul 1, 2004 7:12:59 AM
» Getting Things Done from Synesthesia
My experiences implementing David Allen's Getting Things Done method.... [Read More]
Tracked on Feb 28, 2005 5:40:54 PM
Comments
Excellent tip Michael. This took about three minutes to set up and will save 10 times that amount of time every month setting up my weekly reviews! Keep the automation tips coming.
Posted by: Marc Orchant | Jun 20, 2004 7:20:38 AM
This is awesome.
Thanks so much.
I was even able to add my own content.
One question - when I added my #10 task, it appeared next to #1 task. How can I fix it?
Posted by: guest | Jun 20, 2004 1:09:23 PM
Make sure that items #1-9 have a leading space (after the quotation mark, but before the number), like this, " 1. Item." Two-digit numbers should not have a leading space.
Posted by: Michael Hyatt | Jun 21, 2004 5:30:11 AM
Thank you for sharing this! I'm totally new to macros and was able to set this up easily with your directions. I know I will get a lot of great use out of this!
Posted by: Amanda | Jun 21, 2004 8:48:33 AM
Michael,
I followed your instructions and the code works fine. In your screenshot, however, I see that your WR actions are all under the category !Weekly Review. Did you assign them manually to that category, or should the macro take care of that? When I run the macro, I get the tasks created but there's no category assigned to them.
Posted by: Peter Berx | Jun 22, 2004 3:55:52 PM
I found the reason for the category problem. I'm using the GTD Outlook Add-in, which treats the Action categories different from the Outlook categories.
Posted by: Peter Berx | Jun 22, 2004 4:36:57 PM
Thanks for the code, but I am having trouble with macros not being enabled. Can you direct me to where I can get some help with this one.
Thank you in advance.
Posted by: Mark Gershon | Jul 7, 2004 3:28:52 PM
Mark:
You need to set Tools | Macros | Security to "Medium."
Does that do the trick?
Michael
Posted by: Michael Hyatt | Jul 7, 2004 3:33:08 PM
Michael,
Thank you that did do the trick!
Your blog has joined my morning list of must views!
Thanks again
Mark
Posted by: Mark Gershon | Jul 7, 2004 6:57:25 PM
Nice tip, Michael - thanks. Here's my considerably less polished guide (and code) to preprogramming some task views, for those who have an appetite for more of this sort of thing.
Posted by: Rich | Jul 28, 2004 11:18:17 AM
Michael:
Thanks for the info. I also took this code and adapted it to an "End Of Day" routine. I listed each item I need to remember to do before I leave the office each day. This keeps me from getting half way home and realizing I left something back at the office.
Posted by: Scott | Oct 27, 2004 3:33:42 PM
Hi Michael
Thanks for the great macro. I was wondering how I could add the date of today to some of the tasks. I managed to find out that I should add oMyTaskItem.DueDate = ?, but I can't find the proper value.
Can you tell me where to look for that or do you have the answer?
Renger
Posted by: Renger | Oct 29, 2004 6:56:27 AM
Peter Berx - Mentions:
"I found the reason for the category problem. I'm using the GTD Outlook Add-in, which treats the Action categories different from the Outlook categories."
I was fiddling around with the code for !Weekly Review in an effort to get it to register "!Weekly Review" not only in "Categories," but also fill in the "Action:" field that the GTD Add=in has when it creates a Task.
Needless to say I haven't found a solution yet, and I'm not secure enough in using the system to want to change that view to show Category instead of Action.
Any ideas on how I might tweak the code?
Thank you,
Steve Banks
Posted by: Steven Banks | Dec 9, 2004 1:34:20 AM
Thanks for all your kindness to share these valuable codes, Michael.
Though I work for a kind-of software company, but I've never wrote single line of codes. This time I figured out to do a little code work for GTD community.
I've modified Michael's Weekly Review Macro using Josh Wand's approach and furthur, see following codes.
Changes:
1. David Allen's GTD methodology Compatible, "Action" added, while retained "Catogary";
2. Change "Due Date" and "Reminder Time" to the Sunday of current date, to eliminate Reminder Box pops as you run the macro earlier.
Regards,
Hao Jingshan
'=================================================================
' Procedure : Weekly Review
' Author : Michael S. Hyatt
' Date : 1/5/2004 05:46
' Purpose : Creates several Weekly Review tasks.
' Shortcut : None
' Modified : 6/27/2004 01:11 by Josh Wand (josh@joshwand.com)
' Modified : 12/31/2004 01:11 by Hao Jingshan (JingshanHao@msn.com)
'=================================================================
Sub WeeklyReview()
' Declare the variables:
Dim oMyTaskItem As TaskItem
On Error GoTo WeeklyReview_Error
'Create Tasks:
CreatWeeklyReviewItem 1, "Gather all loose paper and process", "10:00 PM"
CreatWeeklyReviewItem 2, "Launch OneNote and process notes", "10:00 AM"
CreatWeeklyReviewItem 3, "Review previous calendar data", "10:00 AM"
CreatWeeklyReviewItem 4, "Review action lists", "10:00 AM"
CreatWeeklyReviewItem 5, "Review downloaded SoftWare & MHTs", "10:00 AM"
CreatWeeklyReviewItem 6, "Review project lists", "10:00 AM"
CreatWeeklyReviewItem 7, "Review @Waitting For list", "10:00 AM"
CreatWeeklyReviewItem 8, "Review @Someday/Maybe lists", "10:00 AM"
CreatWeeklyReviewItem 9, "Review Long-Term plans", "10:00 AM"
On Error GoTo 0
Exit Sub
WeeklyReview_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure WeeklyReview of Module Utilities"
End Sub
'=================================================================
' Procedure : CreatWeeklyReviewItem
' Author : Josh Wand
' Date : 6/27/2004 01:11 by Josh Wand (josh@joshwand.com)
' Purpose : Creates a single Weekly Review tasks
' Shortcut : None
' Modified : Hao Jingshan (JingshanHao@msn.com)
'=================================================================
Public Sub CreatWeeklyReviewItem(in_number As Integer, in_task As String, Optional in_reminder_time As String)
Dim oMyTaskItem As TaskItem
Dim MyDate
MyDate = 7 - Weekday(Date)
On Error GoTo CreatWeeklyReviewItem_Error
Set oMyTaskItem = Application.CreateItem(olTaskItem)
oMyTaskItem.Subject = in_number & ". " & in_task
oMyTaskItem.UserProperties.Add "Action", olText
oMyTaskItem.UserProperties.Add "ActionVerify", olText
oMyTaskItem.UserProperties.Add "GettingThingsDone", olYesNo
oMyTaskItem.UserProperties("Action") = "!WeeklyReview"
oMyTaskItem.UserProperties("Action Verify") = "!WeeklyReview"
oMyTaskItem.UserProperties("GettingThingsDone") = True
oMyTaskItem.Categories = "!WeeklyReview"
oMyTaskItem.Importance = 1
If Len(in_reminder_time) <> 0 Then
oMyTaskItem.DueDate = Date + MyDate
oMyTaskItem.ReminderSet = True
oMyTaskItem.ReminderTime = Date + MyDate & " " & in_reminder_time
End If
oMyTaskItem.Save
On Error GoTo 0
Exit Sub
CreatWeeklyReviewItem_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure CreateWeeklyReviewItem of Module " & Err.Source
End Sub
Posted by: Hao Jingshan | Dec 31, 2004 2:37:22 AM
Michael:
I read GTD in August 2004 and have not done a few key things, notably the Weekly Review. So I really liked and appreciated your Outlook macro a lot for creating the !WeeklyReview checklist. Not having practiced GTD properly yet, I have to add the notes to the checklist items. I was able to find the "oMyTaskItem.Body" VBA property to add notes. So below is my amended version that adds a note to each item. Want me to post to your blog?
Cheers, David.
GTD WeeklyReview Outlook macro
'===================================================================================
' Procedure : WeeklyReview()
' Author : Michael S. Hyatt
' Date : 1/17/2004 05:46
' Purpose : Creates weekly review tasks.
' Shortcut : None
' Modified : 2005.01.22 David S. McCormick added notes to support the checklist
'===================================================================================
Sub WeeklyReview()
' Declare the variables:
Dim oMyTaskItem As TaskItem
On Error GoTo WeeklyReview_Error
'Create Weekly Review Task #1:
Set oMyTaskItem = Application.CreateItem(olTaskItem)
oMyTaskItem.Subject = "01. Gather all loose papers and process"
oMyTaskItem.Body = "Use the GTD flowchart to decide on Category and Next Actions, if any. Mind Sweep."
oMyTaskItem.Categories = "!Weekly Review"
oMyTaskItem.Importance = 1
oMyTaskItem.Save
'Create Weekly Review Task #2:
Set oMyTaskItem = Application.CreateItem(olTaskItem)
oMyTaskItem.Subject = "02. Process notes"
oMyTaskItem.Body = "List action items, projects, waiting-for's, calendar events, someday/maybe's as appropriate. Put in appropriate categories. File reference material. Stage Read/Reveiw material. Be ruthless about processing all notes and thoughts relative to interactions, projects, new initiatives, and input since last time. Purge all those not needed."
oMyTaskItem.Categories = "!Weekly Review"
oMyTaskItem.Importance = 1
oMyTaskItem.Save
'Create Weekly Review Task #3:
Set oMyTaskItem = Application.CreateItem(olTaskItem)
oMyTaskItem.Subject = "03. Review previous calendar data"
oMyTaskItem.Body = "Review for remainning action items, reference information, etc."
oMyTaskItem.Categories = "!Weekly Review"
oMyTaskItem.Importance = 1
oMyTaskItem.Save
'Create Weekly Review Task #4:
Set oMyTaskItem = Application.CreateItem(olTaskItem)
oMyTaskItem.Subject = "04. Review upcoming calendar"
oMyTaskItem.Body = "Capture actions about arrangements and preparation for upcoming events."
oMyTaskItem.Categories = "!Weekly Review"
oMyTaskItem.Importance = 1
oMyTaskItem.Save
'Create Weekly Review Task #5:
Set oMyTaskItem = Application.CreateItem(olTaskItem)
oMyTaskItem.Subject = "05. Empty your head"
oMyTaskItem.Body = "Write down any new projects, action items, waiting-for's, someday/maybes, etc. Categorize each."
oMyTaskItem.Categories = "!Weekly Review"
oMyTaskItem.Importance = 1
oMyTaskItem.Save
'Create Weekly Review Task #6:
Set oMyTaskItem = Application.CreateItem(olTaskItem)
oMyTaskItem.Subject = "06. Review project lists"
oMyTaskItem.Body = "For each, evaluate status of projects, goal, and outcomes. Make sure that each has at least one Next Action. Can any be moved to Someday/Maybe?"
oMyTaskItem.Categories = "!Weekly Review"
oMyTaskItem.Importance = 1
oMyTaskItem.Save
'Create Weekly Review Task #7:
Set oMyTaskItem = Application.CreateItem(olTaskItem)
oMyTaskItem.Subject = "07. Review my action lists"
oMyTaskItem.Body = "Mark off completed actions and review for reminders of further action steps to capture."
oMyTaskItem.Categories = "!Weekly Review"
oMyTaskItem.Importance = 1
oMyTaskItem.Save
'Create Weekly Review Task #8:
Set oMyTaskItem = Application.CreateItem(olTaskItem)
oMyTaskItem.Subject = "08. Review @Waiting For list"
oMyTaskItem.Body = "Records appropriate actions for any needed follow-up. Check off received items."
oMyTaskItem.Categories = "!Weekly Review"
oMyTaskItem.Importance = 1
oMyTaskItem.Save
'Create Weekly Review Task #9:
Set oMyTaskItem = Application.CreateItem(olTaskItem)
oMyTaskItem.Subject = "09. Review any relevant checklists"
oMyTaskItem.Body = "Is there anything that you haven't done that you need to do?"
oMyTaskItem.Categories = "!Weekly Review"
oMyTaskItem.Importance = 1
oMyTaskItem.Save
'Create Weekly Review Task #10:
Set oMyTaskItem = Application.CreateItem(olTaskItem)
oMyTaskItem.Subject = "10. Review Someday/Maybe lists"
oMyTaskItem.Body = "Check for any project that has or can become active and transfer to Projects. Delete items no longer of interest."
oMyTaskItem.Categories = "!Weekly Review"
oMyTaskItem.Importance = 1
oMyTaskItem.Save
'Create Weekly Review Task #11:
Set oMyTaskItem = Application.CreateItem(olTaskItem)
oMyTaskItem.Subject = "11. Review Pending and Support Files"
oMyTaskItem.Body = " Browse through all work-in-progress support material to trigger new actions, completions, and waiting-for's."
oMyTaskItem.Categories = "!Weekly Review"
oMyTaskItem.Importance = 1
oMyTaskItem.Save
Set oMyTaskItem = Nothing
On Error GoTo 0
Exit Sub
WeeklyReview_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure WeeklyReview of Module Utilities"
End Sub
Posted by: David McCormick | Jan 22, 2005 10:17:36 AM
After I posted my modified version, I saw the earlier post by Hao Jingshan and realized that it was simpler and more elegant. I modified his version to include Body comments (that I need to prompt me for how to do the Weekly Review (since I'm consistant at it yet).
Thanks all, David.
'===================================================================================
' Procedure : WeeklyReview()
' Author : Michael S. Hyatt
' Date : 1/17/2004 05:46
' Purpose : Creates weekly review tasks.
' Shortcut : None
' Modified : 2005.01.22 DSM added notes to support the checklist
' Modified : 2005.02.13 DSM added GTD Actions as per Hao Jingshan methods
'===================================================================================
Sub WeeklyReview()
' Declare the variables:
Dim oMyTaskItem As TaskItem
On Error GoTo WeeklyReview_Error
' Create Tasks
CreatWeeklyReviewItem 1, "Gather all loose paper and process", "Use the GTD flowchart to decide on Category and Next Actions, if any. Mind Sweep."
CreatWeeklyReviewItem 2, "Process notes", "List action items, projects, waiting-for's, calendar events, someday/maybe's as appropriate. Put in appropriate categories. File reference material. Stage Read/Reveiw material. Be ruthless about processing all notes and thoughts relative to interactions, projects, new initiatives, and input since last time. Purge all those not needed."
CreatWeeklyReviewItem 3, "Review previous calendar data", "Review for remainning action items, reference information, etc."
CreatWeeklyReviewItem 4, "Review upcoming calendar", "Capture actions about arrangements and preparation for upcoming events."
CreatWeeklyReviewItem 5, "Empty your head", "Write down any new projects, action items, waiting-for's, someday/maybes, etc. Categorize each."
CreatWeeklyReviewItem 6, "Review project lists", "For each, evaluate status of projects, goal, and outcomes. Make sure that each has at least one Next Action. Can any be moved to Someday/Maybe?"
CreatWeeklyReviewItem 7, "Review my action lists", "Mark off completed actions and review for reminders of further action steps to capture."
CreatWeeklyReviewItem 8, "Review @Waiting For list", "Record appropriate actions for any needed follow-up. Check off received items."
CreatWeeklyReviewItem 9, "Review any relevant checklists", "Is there anything that you haven't done that you need to do?"
CreatWeeklyReviewItem 10, "Review Someday/Maybe lists", "Check for any project that has or can become active and transfer to Projects. Delete items no longer of interest."
CreatWeeklyReviewItem 11, "Review Pending and Support Files", "Browse through all work-in-progress support material to trigger new actions, completions, and waiting-for's."
Set oMyTaskItem = Nothing
On Error GoTo 0
Exit Sub
WeeklyReview_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure WeeklyReview of Module Utilities"
End Sub
'=================================================================
' Procedure : CreatWeeklyReviewItem
' Author : Josh Wand
' Date : 6/27/2004 01:11 by Josh Wand (josh@joshwand.com)
' Purpose : Creates a single Weekly Review tasks
' Shortcut : None
' Modified : Hao Jingshan (JingshanHao@msn.com)
'=================================================================
Public Sub CreatWeeklyReviewItem(in_number As Integer, in_task As String, in_description As String, Optional in_reminder_time As String)
Dim oMyTaskItem As TaskItem
Dim MyDate
MyDate = 7 - Weekday(Date)
On Error GoTo CreatWeeklyReviewItem_Error
Set oMyTaskItem = Application.CreateItem(olTaskItem)
If in_number 0 Then
oMyTaskItem.DueDate = Date + MyDate
oMyTaskItem.ReminderSet = True
oMyTaskItem.ReminderTime = Date + MyDate & " " & in_reminder_time
End If
oMyTaskItem.Save
On Error GoTo 0
Exit Sub
CreatWeeklyReviewItem_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure CreateWeeklyReviewItem of Module " & Err.Source
End Sub
Posted by: David McCormick | Feb 14, 2005 8:20:44 AM
AS mentioned above
I'm having problems with Macors being disabled. I changed the security settings to medium and also to low but I still got the same error when I ran the code.
Help
Rasheed
Posted by: Rasheed | May 19, 2005 11:09:19 PM
I'm having the same problem as Rasheed - How do we resolve this?
Thanks
Posted by: Ben | Sep 27, 2005 3:01:37 PM
Sorted the security levels but now when I run it I get the message "Sub or Function not defined" - What does this mean?
Also, when I click the button I put on the toolbar to run the macro, I get the message "The Macro cannot be found"
Help!
Posted by: Ben | Sep 27, 2005 3:24:35 PM