See if using this alternate way to print helps you:
From https://stackoverflow.com/questions/...nt-not-working
Code:
Option Explicit
PublicDeclare PtrSafe Function ShellExecute Lib"shell32.dll"Alias"ShellExecuteW"(ByVal hWnd AsLong, _
ByVal lpOperation As LongPtr, _
ByVal lpFile As LongPtr, _
ByVal lpParameters As LongPtr, _
ByVal lpDirectory As LongPtr, _
ByVal nShowCmd AsLong)AsLong
PublicConst SW_HIDE AsLong=0
'Hides the window and activates another window.
PublicConst SW_MAXIMIZE AsLong=3
'Maximizes the specified window.
PublicConst SW_MINIMIZE AsLong=6
'Minimizes the specified window and activates the next top-level window in the z-order.
PublicConst SW_RESTORE AsLong=9
'Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window.
PublicConst SW_SHOW AsLong=5
'Activates the window and displays it in its current size and position.
PublicConst SW_SHOWDEFAULT AsLong=10
'Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application. An application should call ShowWindow with this flag to set the initial show state of its main window.
PublicConst SW_SHOWMAXIMIZED AsLong=3
'Activates the window and displays it as a maximized window.
PublicConst SW_SHOWMINIMIZED AsLong=2
'Activates the window and displays it as a minimized window.
PublicConst SW_SHOWMINNOACTIVE AsLong=7
'Displays the window as a minimized window. The active window remains active.
PublicConst SW_SHOWNA AsLong=8
'Displays the window in its current state. The active window remains active.
PublicConst SW_SHOWNOACTIVATE AsLong=4
'Displays a window in its most recent size and position. The active window remains active.
PublicConst SW_SHOWNORMAL AsLong=1
'Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time.
PublicEnum shexActions
shexEDIT
shexEXPLORE
shexFIND
shexOPEN
shexPRINT
EndEnum
PrivateFunction getShellAction(ByRef enACTION As shexActions)AsString
SelectCase enACTION
Case shexActions.shexEDIT
getShellAction ="EDIT"
Case shexActions.shexEXPLORE
getShellAction ="EXPLORE"
Case shexActions.shexFIND
getShellAction ="FIND"
Case shexActions.shexOPEN
getShellAction ="OPEN"
Case shexActions.shexprint
getShellAction ="PRINT"
EndSelect
EndFunction
PublicFunction ShellEx(ByRef strFILE AsString, _
OptionalByRef lngWINDOWHANDLE AsLong=0, _
OptionalByRef shexACTION As shexActions =(-1), _
OptionalByRef strPARAMETERS AsString, _
OptionalByRef strDIRECTORY AsString, _
OptionalByRef lngSHOWCOMMAND AsLong=0)AsLong
Dim lngReturnCheck AsLong
lngReturnCheck =(-1)
lngReturnCheck = ShellExecute(hWnd:=lngWINDOWHANDLE, lpOperation:=StrPtr(getShellAction(shexACTION)), lpFile:=StrPtr(strFILE), lpParameters:=StrPtr(strPARAMETERS), lpDirectory:=StrPtr(strDIRECTORY), nShowCmd:=lngSHOWCOMMAND)
While lngReturnCheck =(-1)
DoEvents
Wend
ShellEx = lngReturnCheck
EndFunction
Sub printBAR()
Dim shFIcol As Shell32.FolderItems
Dim shFIx As Shell32.FolderItem
Dim shFLDx As Shell32.Folder
Dim lngX AsLong
Set shFLDx = GetFolder("Choose a folder...",True)
Set shFIcol = shFLDx.Items()
ForEach shFIx In shFIcol
lngX = ShellEx(shFIx.Path,, shexPRINT)
Debug.Print lngX
Next
EndSub
Cheers,