2017-08-23 3 views
1

J'ai un script VBA qui parcourt les courriels sélectionnés et imprime toutes les pièces jointes au format PDF dans ces courriels.Impression de pièces jointes Outlook sans enregistrer sur le disque dur

Actuellement, le script enregistre les fichiers PDF sur le disque dur, puis les ouvre et les imprime.

Sub BatchPrintAllAttachmentsinMultipleEmails() 
    Dim objFileSystem As Object 
    Dim strTempFolder As String 
    Dim objSelection As Outlook.Selection 
    Dim objItem As Object 
    Dim objMail As Outlook.MailItem 
    Dim objAttachments As Outlook.Attachments 
    Dim objAttachment As Outlook.Attachment 
    Dim objShell As Object 
    Dim objTempFolder As Object 
    Dim objTempFolderItem As Object 
    Dim strFilePath As String 




    Set objFileSystem = CreateObject("Scripting.FileSystemObject") 
    strTempFolder = objFileSystem.GetSpecialFolder(2).Path & "\Temp for Attachments " & Format(Now, "YYYY-MM-DD_hh-mm-ss") 
    strTempFolder = "W:\my documents\test" 

    MkDir (strTempFolder) 

    Set objSelection = Outlook.Application.ActiveExplorer.Selection 

    For Each objItem In objSelection 
     If TypeOf objItem Is MailItem Then 
      Set objMail = objItem 
      Set objAttachments = objMail.Attachments 

      'Save all the attachments in the temp folder 
      For Each objAttachment In objAttachments 
       strFilePath = strTempFolder & "\" & objAttachment.FileName 
       If InStr(strFilePath, ".pdf") <> 0 Or InStr(strFilePath, ".PDF") <> 0 Then 
        objAttachment.SaveAsFile (strFilePath) 
        Set objShell = CreateObject("Shell.Application") 
        Set objTempFolder = objShell.NameSpace(0) 
        Set objTempFolderItem = objTempFolder.ParseName(strFilePath) 
        objTempFolderItem.InvokeVerbEx ("print") 'try now 
       End If 



      Next objAttachment 
     End If 
    Next 

End Sub 

Je me demande s'il est possible d'exécuter ce code sans enregistrer les fichiers sur le disque dur, à savoir juste les ouvrir de la mémoire en VBA, les imprimer, et ai aucune trace sur le disque dur?

+1

Même les gros logiciels, par exemple Outlook, enregistrent des fichiers PDF sur un lecteur local (dossier temporaire) pour les ouvrir dans un autre programme. Le problème ici est que le lecteur PDF a besoin d'une référence/chemin d'accès au fichier que vous voulez ouvrir. Pourquoi ne pas simplement supprimer le fichier du lecteur après qu'il est imprimé? – MatSnow

+0

J'avais des problèmes pour supprimer le dossier et ses fichiers dans VBA, c'est pourquoi je cherchais une solution sans sauvegarde explicite du fichier sur le disque dur. Cependant, j'ai supprimé le fichier et le dossier au sein de VBA, donc votre conseil a finalement fonctionné pour moi! :) Est-il possible de régler cette question à résolu/répondu? – user2011985

Répondre

0

Même les gros logiciels, par exemple Outlook, enregistrent des fichiers PDF sur un lecteur local (dossier temporaire) pour les ouvrir dans un autre programme.
Le problème ici est que le lecteur PDF a besoin d'une référence/chemin d'accès au fichier que vous voulez ouvrir.

Je suggère de supprimer le fichier du lecteur après son impression.