Good day! I am reasonably proficient in Excel VBA programming, but completely new to the Outlook object model. I have tried and failed (at the first hurdle) to install a useful batch-printing macro which I found on the VBA Express website: it shouldprint any PDF attachments found in the "Batch Prints" subfolder of the "Inbox" folder. Attempting to get things going results in 'An object cannot be found' in the highlighted line of code. Can you help at all, please? I am using version 14.0.6112.5000 (32-bit). Ps. "Batch Prints" folder DEFINITELY exists and is a subfolder of "Inbox"
'############################################################################### '### Module level Declarations 'expose the items in the target folder to events Option Explicit Dim WithEvents TargetFolderItems As Items 'set the string constant for the path to save attachments Const FILE_PATH As String = "C:\Temp\" '############################################################################### '### this is the Application_Startup event code in the ThisOutlookSession module Private Sub Application_Startup() 'some startup code to set our "event-sensitive" items collection Dim ns As Outlook.NameSpace ' Set ns = Application.GetNamespace("MAPI") ****** Set TargetFolderItems = ns.Folders.Item("Inbox").Folders.Item("Batch Prints").Items ******* <- PROBLEM HERE End Sub '############################################################################### '### this is the ItemAdd event code Sub TargetFolderItems_ItemAdd(ByVal Item As Object) 'when a new item is added to our "watched folder" we can process it Dim olAtt As Attachment Dim i As Integer If Item.Attachments.Count > 0 Then For i = 1 To Item.Attachments.Count Set olAtt = Item.Attachments(i) 'save the attachment olAtt.SaveAsFile FILE_PATH & olAtt.FileName 'if its an Excel file, pass the filepath to the print routine If UCase(Right(olAtt.FileName, 3)) = "PDF" Then PrintAtt (FILE_PATH & olAtt.FileName) End If Next End If Set olAtt = Nothing End Sub '############################################################################### '### this is the Application_Quit event code in the ThisOutlookSession module Private Sub Application_Quit() Dim ns As Outlook.NameSpace Set TargetFolderItems = Nothing Set ns = Nothing End Sub '############################################################################### '### print routine Sub PrintAtt(fFullPath As String) Dim xlApp As Excel.Application Dim wb As Excel.Workbook 'in the background, create an instance of xl then open, print, quit Set xlApp = New Excel.Application Set wb = xlApp.Workbooks.Open(fFullPath) wb.PrintOut xlApp.Quit 'tidy up Set wb = Nothing Set xlApp = Nothing End Sub





Reply With Quote