Perhaps you always need to print out the task list of the whole week every Monday. This article will expose you a piece of VBA code, which can let Outlook to auto do it.
If you prefer to view your tasks on paper instead of in the computer screen, you may need to always print out the tasks. For instance, you may be accustomed to printing out the task list of the whole week every Monday. In this scenario, you can make use of the method in the followings, which will enable Outlook to auto realize it.
Auto Print the Task List of the Whole Week Every Monday
- At the very outset, start your Outlook application.
- After entering the main Outlook window, press “Alt + F11” key buttons.
- Then you will get into Outlook VBA editor window.
- Now you ought to double click on the “ThisOutlookSession” project in the left side of the current window.
- In the opened “ThisOutlookSession” project window, paste the following VBA code into it.
Dim strExcelFile As String Dim objExcelApp As Excel.Application Dim objExcelWorkbook As Excel.Workbook Dim objExcelWorksheet As Excel.Worksheet Private Sub Application_Reminder(ByVal Item As Object) If Item.Class = olTask And Item.Subject = "Print Tasks" Then Call PrintTaskList End If End Sub Sub PrintTaskList() Dim objStores As Outlook.Stores Dim objStore As Outlook.Store Dim objPSTFile As Outlook.Folder Dim objFolders As Outlook.folders Dim objFolder As Object Dim objShell As Object Dim objTempFolder As Object Dim objTempFolderItem As Object 'Create a new Excel file Set objExcelApp = CreateObject("Excel.Application") Set objExcelWorkbook = objExcelApp.Workbooks.Add Set objExcelWorksheet = objExcelWorkbook.Sheets("Sheet1") objExcelWorksheet.Cells(1, 1) = "Subject" objExcelWorksheet.Cells(1, 2) = "Start Date" objExcelWorksheet.Cells(1, 3) = "Due Date" Set objStores = Outlook.Application.Session.Stores 'Process all Outlook PST files in your Outlook For Each objStore In objStores Set objPSTFile = objStore.GetRootFolder For Each objFolder In objPSTFile.folders Call ProcessFolders(objFolder) Next Next 'Fit the columns from A to B objExcelWorksheet.Columns("A:C").AutoFit 'Save the Excel file in a temp folder strTempFolder = "E:\Temp " & Format(Now, "yyyy-mm-dd hh-mm-ss") MkDir (strTempFolder) strExcelFile = strTempFolder & "\This Week Tasks (" & Format(Now, "yyyy-mm-dd hh-mm-ss") & ").xlsx" objExcelWorkbook.Close True, strExcelFile 'Print the Excel file Set objShell = CreateObject("Shell.Application") Set objTempFolder = objShell.NameSpace(0) Set objTempFolderItem = objTempFolder.ParseName(strExcelFile) objTempFolderItem.InvokeVerbEx ("print") MsgBox "Complete!", vbExclamation End Sub Sub ProcessFolders(ByVal objCurrentFolder As Outlook.Folder) Dim strLastDate As Date Dim strFilter As String Dim objTasks As Outlook.Items Dim objRestrictTasks As Outlook.Items Dim i As Long Dim objTask As Object Dim nLastRow As Integer Dim objSubfolder As Outlook.Folder dLastDate = Format(Date + 6, "YYYY-MM-DD") If objCurrentFolder.DefaultItemType = olTaskItem Then 'Get the tasks of this week Set objTasks = objCurrentFolder.Items strFilter = "[DueDate] <= """ & dLastDate & """" Set objRestrictTasks = objTasks.Restrict(strFilter) 'Fill the information of the tasks of this week in the excel cell For i = objRestrictTasks.Count To 1 Step -1 Set objTask = objRestrictTasks.Item(i) If objTask.Complete = False And objTask.Subject <> "Print Tasks" Then nLastRow = objExcelWorksheet.Range("A" & objExcelWorksheet.Rows.Count).End(xlUp).Row + 1 objExcelWorksheet.Range("A" & nLastRow) = objTask.Subject objExcelWorksheet.Range("B" & nLastRow) = objTask.StartDate objExcelWorksheet.Range("C" & nLastRow) = objTask.DueDate End If Next End If If objCurrentFolder.folders.Count > 0 Then For Each objSubfolder In objCurrentFolder.folders Call ProcessFolders(objSubfolder) Next End If End Sub
- Subsequently, sign this code.
- Later change your Outlook macro settings to permit signed macros.
- After that, you ought to create a recurring task by following the steps below:
- Firstly, create a new task.
- In the new Task window, input the subject “Print Tasks”.
- Then click on “Recurrence” button in the ribbon.
- Next enable a “Weekly – Monday – No end date” recurrence.
- After that, enable a reminder for printing this task.
- Lastly, save and close the current new recurring task.
- From now on, every Monday when the reminder alerts you, Outlook will auto print the task list of the current whole week. Also, you can check the source Excel file in the newly created temp folder as well.
Deal with Outlook Issues
In some degrees, it is inevitable for you to encounter various issues during using Outlook. Thus, you are better off mastering some effective ways for coping with Outlook issues. For example, it’s suggested to get hold of a PST fix tool, which can save you from painful permanent PST data loss.
Shirley Zhang is a data recovery expert in DataNumen, Inc., which is the world leader in data recovery technologies, including recover sql and outlook repair software products. For more information visit www.datanumen.com