add a delay to VB that automatically prints PDF's

Jon_T

New Member
OS Version(s)
  1. Windows
Outlook version
Outlook 2021 64 bit
Email Account
IMAP
Operating system::    Windows 11
Outlook version:     Outlook 2021 64bit
Email type or host:    IMAP

Hello All

I have the following script running to automatically print PDF attachments

Public Sub PrintPDFAttachments(Item As Outlook.MailItem)
Dim Atmt As Attachment
Dim FileName As String
Dim TempFolder As String
Dim objShell As Object

' Set a temporary directory (ensure this path exists or use Environ)
TempFolder = Environ("USERPROFILE") & "\Documents\TempPrint\"
If Dir(TempFolder, vbDirectory) = "" Then MkDir TempFolder

For Each Atmt In Item.Attachments
' Only process PDF files
If LCase(Right(Atmt.FileName, 4)) = ".pdf" Then
FileName = TempFolder & Atmt.FileName
Atmt.SaveAsFile FileName

' Use ShellExecute to print to default printer
Set objShell = CreateObject("Shell.Application")
objShell.NameSpace(0).ParseName(FileName).InvokeVerbEx ("print")
End If
Next Atmt
End Sub

I'm seeing some corrution in the characters when PDF are printed (ascii charaters instead of text). Having changed all the hardware including the PC and the printer I'm wondering if the PC is trying to print too many PDF's at the same time. This is used on the main invoice processing PC and they get a lot of invoices that arrive at the same time from various suppliers.

What command(s) can I use please that will force the VB script to print 1 attachment and then wait 3 seconds before printing the next

Thank you in advance!
 
Outlook VBA doesn't have a built-in timer - you either need to use a loop or use an Excel function to delay it.

Some ideas are here:
 
I'm wondering if the PC is trying to print too many PDF's at the same time.

What command(s) can I use please that will force the VB script to print 1 attachment and then wait 3 seconds before printing the next
Since you are calling Shell.Application to do the Print, and it just executes the program defined as the file type's Print shell command (e.g. Adobe) to do the actual printing, I think you might want to first check that the problem isn't with the program actually doing the printing. If you save one of the attachments, use the default Open on it, and Print from that program, do you still see the corruption?

As Diane noted, there is no native Outlook VBA Sleep command. But I use the kernel32 Sleep to good effect.
Pause Code Execution - VBOffice
You will want to use the PtrSafe attribute to make sure your code is 64 bit clean. e.g.
Code:
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)      ' Windows Sleep DLL Call
 
Similar threads
Thread starter Title Forum Replies Date
J Add imap account issue Using Outlook 9
A Free add-in solution: multiple calendars in the Todo pane Using Outlook 0
T How to Add AT&T Contacts to Outlook 365 Using Outlook 5
S Is there an add-in to PDF entire folders of email with Microsoft 365? Using Outlook 4
L Outlook 2010 - new installation on Windows 11 - aplzod32.dll is not a valid Add-in Using Outlook 12
T Add Account Using Outlook 1
G Add Map It button to Custom Contacts Form in Outlook Outlook VBA and Custom Forms 1
G Outlook 2021 Add Picture to Custom Contact Form Outlook VBA and Custom Forms 2
P Can't add custom field to custom Outlook form, it always adds to the Folder instead Outlook VBA and Custom Forms 2
P VBA to add email address to Outlook 365 rule Outlook VBA and Custom Forms 0
S Outlook 2019 Custom outlook Add-in using Visual Studio Outlook VBA and Custom Forms 0
G automatically choosing "add to autocorrect" option Using Outlook 0
F Want to add second email to Outlook for business use Using Outlook 4
K Add an entry to a specific calendar Using Outlook 1
F Add a category before "Send an Email When You Add an Appointment to Your Calendar" Outlook VBA and Custom Forms 0
J Want to create a button on the nav bar (module add-in) to run code Outlook VBA and Custom Forms 2
M "Attachment Detacher for Outlook" add in, does it update the server copy of the email? Using Outlook 1
J Outlook 365 Add keywords from Listbox to the message body where cursor is placed Outlook VBA and Custom Forms 0
O Add Day Number of the year for 2023-2033 Outlook VBA and Custom Forms 5
J GoDaddy migrated to Office365 - Outlook Wont Add Account Exchange Server Administration 21
F Outlook 2019 Outlook 2019 Add and Sync to New computer Comcast server Using Outlook 2
Witzker Add a text line at the end of the note field in all selected Contacts Outlook VBA and Custom Forms 7
A iCloud Outlook Add In is causing Outlook 2021 to crash and got disabled Using Outlook 10
N How to add or delete items to Move dropdown Menu Using Outlook 0
G Add contacts birthday to calendar Using Outlook 4
V How to add 'Previous Item' and 'Next Item' to the Quick Access Toolbar Using Outlook 1
Commodore Safe way to add or update holidays; Windows Notifications issue Using Outlook 8
kkqq1122 How would I add Search for attachment name Outlook VBA and Custom Forms 3
L did MS ever add way to text via Outlook Using Outlook 5
P How to add a column named categories when searching in Outlook Using Outlook 0
M add new attendee to existing meetings with VBA Outlook VBA and Custom Forms 5
N Can't create NEW GROUP and add/remove a member from existing Group in Outlook Using Outlook 1
Witzker Outlook 2019 Pls. add a Prefix for OUTLOOK 2019 here Using Outlook 1
P Add inanimate objects to meetings? Using Outlook 1
O Outlook 2010 Add delete button to the side of the message list Using Outlook 1
BartH Add a string to the conditions in .Conditions.BodyOrSubject.Text Outlook VBA and Custom Forms 2
A "Get Add-Ins" - Which Version of Outlook to use Using Outlook 1
D Do I need Exchange Add-In? Using Outlook 6
C-S-R Manage Add-ins (Remove Wunderlist) Using Outlook 6
A iCloud add in problems Using Outlook 4
L Macro to add Date & Time etc to "drag to save" e-mails Outlook VBA and Custom Forms 17
C Looking for feedback on new Outlook Add-in Using Outlook 0
L isn't there an OL add-on that flags addressee before sending Using Outlook 3
S Add VBA save code Using Outlook 0
P Shortcut Pane - add shortcut to Office365 group mailbox Using Outlook 1
Z Add ComboBox Value to Body of Email Outlook VBA and Custom Forms 1
G How to add a folder shortcut to outlook quick access toolbar? Using Outlook 6
G Add to Outlook Contacts - Point to non-default contacts folder Using Outlook 0
M Automatically add senders first name to a greeting Outlook VBA and Custom Forms 1
C Add Form to Appointments Received, Automatically Outlook VBA and Custom Forms 6

Similar threads

Back
Top