Outlook Banter

Outlook Banter (http://www.outlookbanter.com/)
-   Outlook and VBA (http://www.outlookbanter.com/outlook-vba/)
-   -   Mass changing Task Due Dates (http://www.outlookbanter.com/outlook-vba/52262-mass-changing-task-due-dates.html)

Mike July 11th 07 02:50 PM

Mass changing Task Due Dates
 
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!


Eric Legault [MVP - Outlook] July 11th 07 06:20 PM

Mass changing Task Due Dates
 
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" wrote:

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!


Mike July 17th 07 02:32 PM

Mass changing Task Due Dates
 
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 [MVP - Outlook]" wrote:

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" wrote:

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!


Eric Legault [MVP - Outlook] July 17th 07 05:10 PM

Mass changing Task Due Dates
 
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" wrote:

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 [MVP - Outlook]" wrote:

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" wrote:

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!



All times are GMT +1. The time now is 08:56 PM.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 2.4.0
Copyright ©2004-2006 OutlookBanter.com