Imprimer uniquement la pièce jointe PDF
Bonjour,
Je souhaite à la réception d'un mail imprimer au choix soit :
cas 1 : le corps du mail + la pièce jointe du mail (PDF)
cas 2 : uniquement la pièce jointe
Connaissez-vous un code que je puisse adapter à ma guise ? (excel 2016)
cdlt,
Gloutoni2
heu pardon, un peu fatigué dans outlook 2016
J'ai trouvé ce code sur internet, je vais voir s'il peut convenir :
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hWnd As Long, ByVal lpszOp As String, _
ByVal lpszFile As String, ByVal lpszParams As String, _
ByVal lpszDir As String, ByVal fsShowCmd As Long) As Long
'fonction d'appel
Sub detache_et_imprime()
Call detache_PJ
Call PrintAllPDF
'MsgBox "Opération terminée, cliquez sur OK pour finir."
Kill "C:\test\*.pdf"
End Sub
Function detache_PJ()
Dim MonOutlook As Outlook.Application
Dim Mail As Object
Dim LeMail As Outlook.MailItem
Dim LesMails As Object
Set MonOutlook = Outlook.Application
Set LesMails = MonOutlook.ActiveExplorer.Selection
For Each LeMail In LesMails
Dim pj As Attachment
For Each pj In LeMail.Attachments
If Right(UCase(pj.FileName), 4) = ".PDF" Then
LeFichier = "c:\test\" & pj.FileName
pj.SaveAsFile (LeFichier)
End If
Next pj
Next LeMail
Set LesMails = Nothing
End Function
Function PrintAllPDF()
Dim strFileName As String
Dim strPath As String
strPath = "c:\test\"
strFileName = Dir(strPath + "*.pdf", vbNormal)
Do While strFileName <> ""
LeFichier = strPath + strFileName
printPDF (LeFichier)
strFileName = Dir
Loop
End Function
'la macro d'impression, chems = chemin complet de la piece jointe
Function printPDF(chems)
Dim Res As Long
Dim chemin_de_MaPj As String
chemin_de_MaPj = chems
Res = ShellExecute(0, "print", chemin_de_MaPj, "", "", 0)
End FunctionBonjour,
J'ai un problème avec cette macro :
'fonction d'appel
Sub detache_et_imprime(MyItem As Outlook.MailItem)
'Selection.MyItem
Call detache_PJ
End Sub
Function detache_PJ()
Dim MonOutlook As Outlook.Application
Dim Mail As Object
Dim LeMail As Outlook.MailItem
Dim LesMails As Object
Set MonOutlook = Outlook.Application
Set LesMails = MonOutlook.ActiveExplorer.Selection
For Each LeMail In LesMails
Dim pj As Attachment
For Each pj In LeMail.Attachments
If Right(UCase(pj.FileName), 4) = ".PDF" Then
LeFichier = "C:\test\" & pj.FileName
pj.SaveAsFile (LeFichier)
End If
Next pj
Next LeMail
Set LesMails = Nothing
End FunctionAprès réception de ce mail, la macro s'applique sur le précédent mail selectionné et pas sur le mail qui vient d'être réceptionné, avez-vous une solution ?
Soit en sélectionnant (mais je n'arrive pas à selectionner un mail comme on selectionne une cellule sous excel) soit ... pas d'idée ...
Merci par avance,
Gloutoni2
Je confirme avec le débugger, lorsque je veux connaitre le nom du fichier de 'LeMail' il me dit que c'est bien l'autre mail sélectionné et non le mail qui engendre le lancement de la macro.