If your boss frequently sends various task requests which contain many task related attachments, you must hope that Outlook can automatically print out the attached files. This article will teach you how to use VBA to achieve it.
As we all know, not only can Outlook support us to send emails, but also it allows us to send meeting requests and task requests. Therefore, if you’re using Outlook for work, you must often receive a variety of meeting requests and task requests from your superior. In general, the task requests will always come packed with a lot of attachments, which are usually related materials. Then you will definitely print out these attached files. Under this circumstance, it will be better if Outlook can automatically print them. In response to this, here we will teach you a quick way which uses VBA to help you realize it without breaking a sweat.
Auto Print the Attachments in Incoming Task Requests
- In the first place, start your Outlook application.
- Then press “Alt + F11” key buttons to access Outlook VBA editor.
- Next open the “ThisOutlookSession” project window.
- Subsequently, copy and paste the following VBA codes into this project.
Public WithEvents objItems As Outlook.Items Private Sub Application_Startup() Set objItems = Outlook.Application.Session.GetDefaultFolder(olFolderInbox).Items End Sub Private Sub objItems_ItemAdd(ByVal Item As Object) Dim objTaskRequest As Outlook.TaskRequestItem Dim objTask As Outlook.TaskItem Dim objAttachments As Outlook.attachments Dim objAttachment As Outlook.Attachment Dim strMsg As String Dim nResponse As Integer Dim objFileSystem As Object Dim strTempFolder As String Dim objShell As Object Dim objTempFolder As Object Dim objTempFolderItem As Object Dim strFilePath As String On Error Resume Next If TypeOf Item Is TaskRequestItem Then Set objTaskRequest = Item Set objTask = objTaskRequest.GetAssociatedTask(True) Set objAttachments = objTask.attachments End If If objAttachments.Count > 0 Then strMsg = "Do you want to print the attachments in the new task request?" nResponse = MsgBox(strMsg, vbExclamation + vbYesNo, "New Task Request") If nResponse = vbYes Then Set objFileSystem = CreateObject("Scripting.FileSystemObject") strTempFolder = objFileSystem.GetSpecialFolder(2).Path & "\TEMP" & Format(Now, "hh-ss-dd-mm-yyyy") 'Create a new temp folder MkDir (strTempFolder) For Each objAttachment In objAttachments 'Save all the attachments to the newly created folder strFilePath = strTempFolder & "\" & objAttachment.FileName objAttachment.SaveAsFile (strFilePath) 'Print all the items in the newly create folder Set objShell = CreateObject("Shell.Application") Set objTempFolder = objShell.NameSpace(0) Set objTempFolderItem = objTempFolder.ParseName(strFilePath) objTempFolderItem.InvokeVerbEx ("print") Next objAttachment End If End If End Sub
- After that, sign this code.
- Later change Outlook macro settings to permit the digitally signed macros.
- Finally, you can restart your Outlook to activate the new VBA project.
- From now on, every time any new task request arrive in your inbox, you will get a message asking if to print the task attachments, like the following image:
- If you select “Yes”, all the attachments will be printed out automatically.
Exempt from Frequent PST Troubles
If you’re used Outlook for decades, you will surely meet up with many PST issues. In this case, you have to back up your PST file as soon as possible. Then recur to the inbox repair tool to try to solve the problems. Assuming that it fails, you can continue to resort to a more remarkable tool, such as DataNumen Outlook Repair.
Shirley Zhang is a data recovery expert in DataNumen, Inc., which is the world leader in data recovery technologies, including SQL Server recovery and outlook repair software products. For more information visit www.datanumen.com