Mass changing Task Due Dates

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

Is there a way to mass change task due dates?

I generally have several tasks due today. However, I may only fully complete
one or two of them. I want to mass change the others so that they are changed
to the next day, next week, etc., without going into each one individually.

I can't find any standard functionality for this. VBA may be my best hope,
but I am not sure how to program this in Outlook. I am experienced with VBA
in Excel, but not in Outlook.

Thanks!
 
Try this code:

Sub RecurseTasks()
On Error GoTo RecurseTasks_Error

Dim objOL As Outlook.Application
Dim objNS As Outlook.NameSpace
Dim objTasksFolder As Outlook.MAPIFolder
Dim objItems As Outlook.Items
Dim objTaskItem As Outlook.TaskItem

Set objOL = New Outlook.Application
Set objNS = objOL.GetNamespace("MAPI")
Set objTasksFolder = objNS.GetDefaultFolder(olFolderTasks)
'Set objItems = objTasksFolder.Items.Restrict("[Due Date] >= '" &
Format(Date, "ddddd h:nn AMPM") & "'")
Set objItems = objTasksFolder.Items.Restrict("[Due Date] >= '" &
Format(Date, "ddddd") & "'")

For Each objTaskItem In objItems
Debug.Print objTaskItem.Subject & " (Start: " &
objTaskItem.startDate & "; End: " & objTaskItem.DueDate
'or edit task:
' objTaskItem.DueDate = #8/31/2007#
' objTaskItem.Save
Next

Set objOL = Nothing
Set objNS = Nothing
Set objTasksFolder = Nothing
Set objTaskItem = Nothing
Set objItems = Nothing

On Error GoTo 0
Exit Sub

RecurseTasks_Error:

MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure
RecurseTasks of Module basTasksMacros"
Resume Next
End Sub
 
Thanks. Here is a small update to the code. It works!

Also, I want to make these small improvements. Any ideas?
1. Only change the tasks I selected
2. Have pop-up box to either choose: Today or a Manually Entered Date.

Cheers!

Here is my updated code!



Sub UpdateTask_DueDate()
'Purpose: To update old tasks (with old Due Dates) to Today

On Error GoTo RecurseTasks_Error

Dim objOL As Outlook.Application
Dim objNS As Outlook.NameSpace
Dim objTasksFolder As Outlook.MAPIFolder
Dim objItems As Outlook.Items
Dim objTaskItem As Outlook.TaskItem

Set objOL = New Outlook.Application
Set objNS = objOL.GetNamespace("MAPI")
Set objTasksFolder = objNS.GetDefaultFolder(olFolderTasks)
Set objItems = objTasksFolder.Items.Restrict("[Due Date] < '" &
Format(Date, "ddddd") & "'")

For Each objTaskItem In objItems
' Debug.Print objTaskItem.Subject & " (Start: " &
objTaskItem.StartDate & "; End: " & objTaskItem.DueDate
'or edit task:
objTaskItem.DueDate = Date
' objTaskItem.DueDate = #8/31/2007#
objTaskItem.Save
Next

Set objOL = Nothing
Set objNS = Nothing
Set objTasksFolder = Nothing
Set objTaskItem = Nothing
Set objItems = Nothing

On Error GoTo 0
Exit Sub

RecurseTasks_Error:

MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure
RecurseTasks of Module basTasksMacros"
Resume Next
End Sub











Eric Legault said:
Try this code:

Sub RecurseTasks()
On Error GoTo RecurseTasks_Error

Dim objOL As Outlook.Application
Dim objNS As Outlook.NameSpace
Dim objTasksFolder As Outlook.MAPIFolder
Dim objItems As Outlook.Items
Dim objTaskItem As Outlook.TaskItem

Set objOL = New Outlook.Application
Set objNS = objOL.GetNamespace("MAPI")
Set objTasksFolder = objNS.GetDefaultFolder(olFolderTasks)
'Set objItems = objTasksFolder.Items.Restrict("[Due Date] >= '" &
Format(Date, "ddddd h:nn AMPM") & "'")
Set objItems = objTasksFolder.Items.Restrict("[Due Date] >= '" &
Format(Date, "ddddd") & "'")

For Each objTaskItem In objItems
Debug.Print objTaskItem.Subject & " (Start: " &
objTaskItem.startDate & "; End: " & objTaskItem.DueDate
'or edit task:
' objTaskItem.DueDate = #8/31/2007#
' objTaskItem.Save
Next

Set objOL = Nothing
Set objNS = Nothing
Set objTasksFolder = Nothing
Set objTaskItem = Nothing
Set objItems = Nothing

On Error GoTo 0
Exit Sub

RecurseTasks_Error:

MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure
RecurseTasks of Module basTasksMacros"
Resume Next
End Sub

--
Eric Legault - Outlook MVP, MCDBA, MCTS (SharePoint programming, etc.)
Try Picture Attachments Wizard for Outlook:
http://www.collaborativeinnovations.ca
Blog: http://blogs.officezealot.com/legault/


Mike said:
Is there a way to mass change task due dates?

I generally have several tasks due today. However, I may only fully complete
one or two of them. I want to mass change the others so that they are changed
to the next day, next week, etc., without going into each one individually.

I can't find any standard functionality for this. VBA may be my best hope,
but I am not sure how to program this in Outlook. I am experienced with VBA
in Excel, but not in Outlook.

Thanks!
 
Look to the Explorer.Selection object to give you a collection of items that
are selected in the active folder.

For full control over presenting the user with options, design a UserForm
with your custom UI. Otherwise, for simplicity you can use VBA's InputBox
function to prompt for a value (you can provide a default value for the user
as well).

--
Eric Legault - Outlook MVP, MCDBA, MCTS (SharePoint programming, etc.)
Try Picture Attachments Wizard for Outlook:
http://www.collaborativeinnovations.ca
Blog: http://blogs.officezealot.com/legault/


Mike said:
Thanks. Here is a small update to the code. It works!

Also, I want to make these small improvements. Any ideas?
1. Only change the tasks I selected
2. Have pop-up box to either choose: Today or a Manually Entered Date.

Cheers!

Here is my updated code!



Sub UpdateTask_DueDate()
'Purpose: To update old tasks (with old Due Dates) to Today

On Error GoTo RecurseTasks_Error

Dim objOL As Outlook.Application
Dim objNS As Outlook.NameSpace
Dim objTasksFolder As Outlook.MAPIFolder
Dim objItems As Outlook.Items
Dim objTaskItem As Outlook.TaskItem

Set objOL = New Outlook.Application
Set objNS = objOL.GetNamespace("MAPI")
Set objTasksFolder = objNS.GetDefaultFolder(olFolderTasks)
Set objItems = objTasksFolder.Items.Restrict("[Due Date] < '" &
Format(Date, "ddddd") & "'")

For Each objTaskItem In objItems
' Debug.Print objTaskItem.Subject & " (Start: " &
objTaskItem.StartDate & "; End: " & objTaskItem.DueDate
'or edit task:
objTaskItem.DueDate = Date
' objTaskItem.DueDate = #8/31/2007#
objTaskItem.Save
Next

Set objOL = Nothing
Set objNS = Nothing
Set objTasksFolder = Nothing
Set objTaskItem = Nothing
Set objItems = Nothing

On Error GoTo 0
Exit Sub

RecurseTasks_Error:

MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure
RecurseTasks of Module basTasksMacros"
Resume Next
End Sub











Eric Legault said:
Try this code:

Sub RecurseTasks()
On Error GoTo RecurseTasks_Error

Dim objOL As Outlook.Application
Dim objNS As Outlook.NameSpace
Dim objTasksFolder As Outlook.MAPIFolder
Dim objItems As Outlook.Items
Dim objTaskItem As Outlook.TaskItem

Set objOL = New Outlook.Application
Set objNS = objOL.GetNamespace("MAPI")
Set objTasksFolder = objNS.GetDefaultFolder(olFolderTasks)
'Set objItems = objTasksFolder.Items.Restrict("[Due Date] >= '" &
Format(Date, "ddddd h:nn AMPM") & "'")
Set objItems = objTasksFolder.Items.Restrict("[Due Date] >= '" &
Format(Date, "ddddd") & "'")

For Each objTaskItem In objItems
Debug.Print objTaskItem.Subject & " (Start: " &
objTaskItem.startDate & "; End: " & objTaskItem.DueDate
'or edit task:
' objTaskItem.DueDate = #8/31/2007#
' objTaskItem.Save
Next

Set objOL = Nothing
Set objNS = Nothing
Set objTasksFolder = Nothing
Set objTaskItem = Nothing
Set objItems = Nothing

On Error GoTo 0
Exit Sub

RecurseTasks_Error:

MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure
RecurseTasks of Module basTasksMacros"
Resume Next
End Sub

--
Eric Legault - Outlook MVP, MCDBA, MCTS (SharePoint programming, etc.)
Try Picture Attachments Wizard for Outlook:
http://www.collaborativeinnovations.ca
Blog: http://blogs.officezealot.com/legault/


Mike said:
Is there a way to mass change task due dates?

I generally have several tasks due today. However, I may only fully complete
one or two of them. I want to mass change the others so that they are changed
to the next day, next week, etc., without going into each one individually.

I can't find any standard functionality for this. VBA may be my best hope,
but I am not sure how to program this in Outlook. I am experienced with VBA
in Excel, but not in Outlook.

Thanks!
 
Back
Top