Note: The other languages of the website are Google-translated. Back to English

Come salvare tutti gli allegati da più e-mail nella cartella in Outlook?

È facile salvare tutti gli allegati da un'e-mail con la funzione Salva tutti gli allegati incorporata in Outlook. Tuttavia, se desideri salvare tutti gli allegati da più e-mail contemporaneamente, non è disponibile alcuna funzione diretta. È necessario applicare ripetutamente la funzione Salva tutti gli allegati in ogni e-mail fino a quando tutti gli allegati non vengono salvati da tali e-mail. Questo richiede tempo. In questo articolo, introduciamo due metodi per salvare in blocco tutti gli allegati da più e-mail in una cartella specifica facilmente in Outlook.

Salva tutti gli allegati da più email nella cartella con il codice VBA
Diversi clic per salvare tutti gli allegati da più e-mail in una cartella con uno strumento straordinario


Salva tutti gli allegati da più email nella cartella con il codice VBA

Questa sezione mostra un codice VBA in una guida passo passo per aiutarti a salvare rapidamente tutti gli allegati da più email in una cartella specifica contemporaneamente. Si prega di fare quanto segue.

1. Innanzitutto, è necessario creare una cartella per salvare gli allegati nel computer.

Entra nel Documenti cartella e creare una cartella denominata "Allegati". Visualizza gli screenshot:

2. Selezionare i messaggi di posta elettronica che verranno salvati negli allegati, quindi premere altro + F11 chiavi per aprire il Microsoft Visual Basic, Applications Edition finestra.

3. Clic inserire > Modulo per aprire il Modulo finestra, quindi copia uno dei seguenti codice VBA nella finestra.

Codice VBA 1: salva in blocco gli allegati da più e-mail (salva direttamente gli allegati con lo stesso nome)

Suggerimenti:: Questo codice salverà gli allegati con lo stesso nome aggiungendo le cifre 1, 2, 3 ... dopo i nomi dei file.

Dim GCount As Integer
Dim GFilepath As String
Public Sub SaveAttachments()
'Update 20200821
Dim xMailItem As Outlook.MailItem
Dim xAttachments As Outlook.Attachments
Dim xSelection As Outlook.Selection
Dim i As Long
Dim xAttCount As Long
Dim xFilePath As String, xFolderPath As String, xSaveFiles As String
On Error Resume Next
xFolderPath = CreateObject("WScript.Shell").SpecialFolders(16)
Set xSelection = Outlook.Application.ActiveExplorer.Selection
xFolderPath = xFolderPath & "\Attachments\"
If VBA.Dir(xFolderPath, vbDirectory) = vbNullString Then
    VBA.MkDir xFolderPath
End If
GFilepath = ""
For Each xMailItem In xSelection
    Set xAttachments = xMailItem.Attachments
    xAttCount = xAttachments.Count
    xSaveFiles = ""
    If xAttCount > 0 Then
        For i = xAttCount To 1 Step -1
            GCount = 0
            xFilePath = xFolderPath & xAttachments.Item(i).FileName
            GFilepath = xFilePath
            xFilePath = FileRename(xFilePath)
            If IsEmbeddedAttachment(xAttachments.Item(i)) = False Then
                xAttachments.Item(i).SaveAsFile xFilePath
                If xMailItem.BodyFormat <> olFormatHTML Then
                    xSaveFiles = xSaveFiles & vbCrLf & "<Error! Hyperlink reference not valid.>"
                Else
                    xSaveFiles = xSaveFiles & "<br>" & "<a href='file://" & xFilePath & "'>" & xFilePath & "</a>"
                End If
            End If
        Next i
    End If
Next
Set xAttachments = Nothing
Set xMailItem = Nothing
Set xSelection = Nothing
End Sub

Function FileRename(FilePath As String) As String
Dim xPath As String
Dim xFso As FileSystemObject
On Error Resume Next
Set xFso = CreateObject("Scripting.FileSystemObject")
xPath = FilePath
FileRename = xPath
If xFso.FileExists(xPath) Then
    GCount = GCount + 1
    xPath = xFso.GetParentFolderName(GFilepath) & "\" & xFso.GetBaseName(GFilepath) & " " & GCount & "." + xFso.GetExtensionName(GFilepath)
    FileRename = FileRename(xPath)
End If
xFso = Nothing
End Function

Function IsEmbeddedAttachment(Attach As Attachment)
Dim xItem As MailItem
Dim xCid As String
Dim xID As String
Dim xHtml As String
On Error Resume Next
IsEmbeddedAttachment = False
Set xItem = Attach.Parent
If xItem.BodyFormat <> olFormatHTML Then Exit Function
xCid = ""
xCid = Attach.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F")
If xCid <> "" Then
    xHtml = xItem.HTMLBody
    xID = "cid:" & xCid
    If InStr(xHtml, xID) > 0 Then
        IsEmbeddedAttachment = True
    End If
End If
End Function
Codice VBA 2: salva in blocco gli allegati da più e-mail (controlla i duplicati)
Public Sub SaveAttachments()
'Update 20200821
Dim xMailItem As Outlook.MailItem
Dim xAttachments As Outlook.Attachments
Dim xSelection As Outlook.Selection
Dim i As Long
Dim xAttCount As Long
Dim xFilePath As String, xFolderPath As String, xSaveFiles As String
Dim xYesNo As Integer
Dim xFlag As Boolean
On Error Resume Next
xFolderPath = CreateObject("WScript.Shell").SpecialFolders(16)
Set xSelection = Outlook.Application.ActiveExplorer.Selection
xFolderPath = xFolderPath & "\Attachments\"
If VBA.Dir(xFolderPath, vbDirectory) = vbNullString Then
    VBA.MkDir xFolderPath
End If
For Each xMailItem In xSelection
    Set xAttachments = xMailItem.Attachments
    xAttCount = xAttachments.Count
    xSaveFiles = ""
    If xAttCount > 0 Then
        For i = xAttCount To 1 Step -1
            xFilePath = xFolderPath & xAttachments.Item(i).FileName
            xFlag = True
            If VBA.Dir(xFilePath, 16) <> Empty Then
                xYesNo = MsgBox("The file is exists, do you want to replace it", vbYesNo + vbInformation, "Kutools for Outlook")
                If xYesNo = vbNo Then xFlag = False
            End If
            If xFlag = True Then
                xAttachments.Item(i).SaveAsFile xFilePath
                If xMailItem.BodyFormat <> olFormatHTML Then
                    xSaveFiles = xSaveFiles & vbCrLf & "<Error! Hyperlink reference not valid.>"
                Else
                    xSaveFiles = xSaveFiles & "<br>" & "<a href='file://" & xFilePath & "'>" & xFilePath & "</a>"
                End If
            End If
        Next i
    End If
Next
Set xAttachments = Nothing
Set xMailItem = Nothing
Set xSelection = Nothing
End Sub

Note:

1) Se si desidera salvare tutti gli allegati con lo stesso nome in una cartella, applicare quanto sopra Codice VBA 1. Prima di eseguire questo codice, fare clic su Strumenti > Riferimentie quindi controllare il Runtime di script Microsoft casella nella Riferimenti - Progetto la finestra di dialogo;

doc salva allegati 07

2) Se si desidera verificare la presenza di nomi di allegati duplicati, applicare il codice VBA 2. Dopo aver eseguito il codice, verrà visualizzata una finestra di dialogo per ricordare se sostituire gli allegati duplicati, scegliere or Non in base alle proprie esigenze.

5. premi il F5 chiave per eseguire il codice.

Quindi tutti gli allegati nelle e-mail selezionate vengono salvati nella cartella creata nel passaggio 1. 

Note: Potrebbe esserci un Microsoft Outlook finestra di messaggio che si apre, fare clic su Consentire pulsante per andare avanti.


Salva tutti gli allegati da più email in una cartella con uno strumento straordinario

Se sei un principiante in VBA, qui altamente raccomandato il Salva tutti gli allegati utilità di Kutools per Outook per te. Con questa utility, puoi salvare rapidamente tutti gli allegati da più e-mail contemporaneamente con diversi clic solo in Outlook.
Prima di applicare la funzione, per favore scarica e installa prima Kutools per Outlook.

1. Selezionare le e-mail contenenti gli allegati che si desidera salvare.

Suggerimenti: Puoi selezionare più email non adiacenti tenendo premuto il tasto Ctrl tasto e selezionarli uno per uno;
Oppure seleziona più email adiacenti tenendo premuto il tasto spostamento e seleziona la prima e-mail e l'ultima.

2. Clic Kutools >Strumenti per gli allegatiSalva tutto. Vedi screenshot:

3. Nel Salva impostazioni finestra di dialogo, fare clic su per selezionare una cartella in cui salvare gli allegati, quindi fare clic su OK pulsante.

3. Clic OK due volte nella successiva finestra di dialogo, quindi tutti gli allegati nelle e-mail selezionate vengono salvati nella cartella specificata contemporaneamente.

Note:

  • 1. Se desideri salvare gli allegati in cartelle diverse in base alle e-mail, controlla il file Crea sottocartelle nel seguente stile casella e scegli uno stile di cartella dal menu a discesa.
  • 2. Oltre a salvare tutti gli allegati, è possibile salvare gli allegati in base a condizioni specifiche. Ad esempio, si desidera salvare solo gli allegati del file pdf il cui nome del file contiene la parola "Fattura", fare clic sul pulsante opzioni avanzate per espandere le condizioni, quindi configurare come mostrato di seguito.
  • 3. Se si desidera salvare automaticamente gli allegati all'arrivo di messaggi di posta elettronica, il file Salvataggio automatico degli allegati la funzione può aiutare.
  • 4. Per scollegare gli allegati direttamente dalle e-mail selezionate, il file Scollega tutti gli allegati caratteristica di Kutools per Outlook puoi farti un favore

  Se desideri avere una prova gratuita (60 giorni) di questa utility, fare clic per scaricarlo, quindi andare ad applicare l'operazione secondo i passaggi precedenti.


Articoli correlati

Inserisci allegati nel corpo del messaggio di posta elettronica in Outlook
Normalmente gli allegati vengono visualizzati nel campo Allegati in un'e-mail di composizione. Qui questo tutorial fornisce metodi per aiutarti a inserire facilmente allegati nel corpo dell'email in Outlook.

Scarica / salva automaticamente gli allegati da Outlook in una determinata cartella
In generale, puoi salvare tutti gli allegati di un'e-mail facendo clic su Allegati> Salva tutti gli allegati in Outlook. Ma se è necessario salvare tutti gli allegati da tutte le e-mail ricevute e ricevute, qualsiasi ideale? Questo articolo introdurrà due soluzioni per scaricare automaticamente gli allegati da Outlook in una determinata cartella.

Stampa tutti gli allegati in una / più email in Outlook
Come sai, stamperà solo il contenuto dell'email come intestazione, corpo quando fai clic su File> Stampa in Microsoft Outlook, ma non stampa gli allegati. Qui ti mostreremo come stampare facilmente tutti gli allegati in un'e-mail selezionata in Microsoft Outlook.

Cerca parole all'interno dell'allegato (contenuto) in Outlook
Quando digitiamo una parola chiave nella casella di ricerca istantanea in Outlook, cercherà la parola chiave nell'oggetto, nel corpo, negli allegati delle email, ecc. Ma ora devo solo cercare la parola chiave nel contenuto degli allegati solo in Outlook, idea? Questo articolo mostra i passaggi dettagliati per cercare facilmente le parole all'interno del contenuto degli allegati in Outlook.

Conserva gli allegati quando rispondi in Outlook
Quando inoltriamo un messaggio di posta elettronica in Microsoft Outlook, gli allegati originali in questo messaggio di posta elettronica rimangono nel messaggio inoltrato. Tuttavia, quando rispondiamo a un messaggio di posta elettronica, gli allegati originali non verranno allegati nel nuovo messaggio di risposta. Qui introdurremo un paio di trucchi per mantenere gli allegati originali quando si risponde in Microsoft Outlook.


Kutools for Outlook: porta 100 funzionalità avanzate in Outlook e semplifica notevolmente il lavoro!

  • Auto CC / BCC dalle regole durante l'invio di e-mail; Avanzamento automatico Email multiple personalizzate; Risposta automatica senza server di scambio e più funzioni automatiche ...
  • Avviso BCC - mostra il messaggio quando provi a rispondere a tutti se il tuo indirizzo e-mail è nell'elenco BCC; Ricorda quando mancano allegatie altre funzioni di promemoria ...
  • Rispondi (tutti) con tutti gli allegati nella conversazione di posta; Rispondi a molte email in secondi; Aggiunta automatica di saluto quando rispondi; Aggiungi la data all'oggetto ...
  • Strumenti per gli allegati: gestisci tutti gli allegati in tutti i messaggi, Scollegamento automatico, Comprimi tutto, Rinomina tutto, Salva tutto... Rapporto rapido, Conta le email selezionate...
  • E-mail spazzatura potenti per abitudine; Rimuovi messaggi e contatti duplicati... Consentono di fare in modo più intelligente, veloce e migliore in Outlook.
girato kutools outlook scheda kutools 1180x121
girato kutools outlook kutools plus tab 1180x121
 
Commenti (76)
Rinomato 2.75 su 5 · Valutazioni 2
Questo commento è stato fatto dal moderatore sul sito
Quando provo a eseguirlo, ottengo un errore di sintassi su objMsg.Save() - Expects =
Questo commento è stato fatto dal moderatore sul sito
Quando provo a eseguirlo, ottengo un errore di sintassi su objMsg.Save() - Expects =
Questo commento è stato fatto dal moderatore sul sito
Stesso errore di sintassi del problema su objMsg.Save() ...
Questo commento è stato fatto dal moderatore sul sito
Alcune correzioni: 1. objMsg.Save 'senza () 2. Gli oggetti devono essere assegnati con SET (es. SET objSelection = objOL.ActiveExplorer.Selection) 3. Il Loop principale dovrebbe contenere un DoEvents per evitare il blankout da parte di Outlook. 4. Quando si elaborano molte e-mail (più di 100), Outlook potrebbe bloccarsi. Sembra che ci sia una perdita di memoria da qualche parte. Solo i miei 2 centesimi. A parte i bug (probabilmente dovuti a Outlook 2013) questo è davvero bello e funzionante. Grazie mille per la condivisione.
Questo commento è stato fatto dal moderatore sul sito
Grazie per la condivisione. Sono d'accordo con Stephan sui suoi primi due punti, vedere alcuni chiarimenti sul suo punto 3. Infine, l'aggiunta di un DoEvents nel posto giusto dovrebbe consentire di elaborare un gran numero di e-mail (basta eseguire questo codice su 157 e-mail in Outlook 2013). Alcuni pensieri aggiuntivi: 1) Funziona solo se usi la cartella Documenti. Per un caso più generale: eliminare la riga 12 la riga 15 dovrebbe essere: strFolderpath = "C:\cartella\altra cartella\" sostituto C:\cartella\altra cartella\ con qualunque percorso tu abbia. 2) Questo codice non eliminerà gli allegati, se vuoi che elimini l'iniziale ' dalla riga 25. 3) Se hai allegati di grandi dimensioni, probabilmente è una buona idea (come ha notato Stephan) inserire una funzione DoEvents dopo la riga 24. 4) Personalmente non voglio modificare le email in alcun modo (es. aggiungendo il percorso di salvataggio del file al testo della mail), se sei d'accordo con me puoi cancellare la riga 26-39. 5) Se salti il ​​mio passaggio 4, puoi consentire al programma di modificare le e-mail selezionando "Consenti accesso per x tempo", quindi devi fare clic su Consenti solo una volta (vedi passaggio 6 sopra nell'originale).
Questo commento è stato fatto dal moderatore sul sito
"Personalmente non voglio modificare le email in alcun modo (es. aggiungendo il percorso di salvataggio del file al testo della mail), se sei d'accordo con me puoi cancellare la riga 26-39. 5)"



Come posso eliminarlo DOPO il fatto. Idk come usare regex con VBA
Rinomato 0.5 su 5
Questo commento è stato fatto dal moderatore sul sito
Seguendo i suggerimenti di cui sopra, ho ricevuto quotidianamente e-mail generate dal sistema con allegato "report.txt" e dovevo aggiungere la data di invio al nome del file salvato per evitare sovrascritture e distinguere i file. Sono state apportate le seguenti aggiunte nelle posizioni appropriate: add- Dim strSent As String add- strSent = Format(objMsg.SentOn, "yymmdd") add- strFile = strSent & strFile I file salvati ora sono 140822Report.txt, ecc.
Questo commento è stato fatto dal moderatore sul sito
Ciao..Ho provato di tutto qui ma continuo a ricevere il blocco Complile Error se senza fine se. Ho apportato modifiche secondo i suggerimenti di Thomas. Ecco il codice... cosa mi sto perdendo? Qualsiasi aiuto è apprezzato. Public Sub SaveAttachments() 'Aggiorna 20130828 Dim objOL As Outlook.Application Dim objMsg As Outlook.MailItem Dim objAttachments As Outlook.Attachments Dim objSelection As Outlook.Selection Dim i As Long Dim lngCount As Long Dim strFile As String Dim strFolderpath As String Dim strDeletedFiles As String objOL = CreateObject("Outlook.Application") objSelection = objOL.ActiveExplorer.Selection strFolderpath = "C:\folder\Attachments\" per ogni objMsg In objSelection objAttachments = objMsg.Attachments lngCount = objAttachments.Count strDeletedFiles = "" If lngCount > 0 Quindi For i = lngCount A 1 Passaggio -1 strFile = objAttachments.Item(i).FileName strFile = strFolderpath & strFile objAttachments.Item(i).SaveAsFile strFile DoEvents 'objAttachments.Item(i).Delete() Avanti ExitSub: objAttachments = Niente objMsg = Niente impostato objSelection = objOL.ActiveExplorer.Selection objOL = Niente End Sub
Questo commento è stato fatto dal moderatore sul sito
To sharon: il sito Web di seguito risolve il tuo problema. www_dot_outlook-tips_dot_net/code-samples/save-and-delete-attachments/ NON ha il codice della funzione timestamp che TXgardner ha fornito sopra, quindi se lo desideri, devi modificare il tuo codice.
Questo commento è stato fatto dal moderatore sul sito
Questo ha funzionato alla grande tranne che per un problema. Gli allegati nelle mie e-mail hanno tutti lo stesso nome, quindi quando vengono copiati, lo script continua a sostituire lo stesso file con l'allegato successivo nella coda. C'è un modo per farli rinominare piuttosto che riscriverli? Grazie!
Questo commento è stato fatto dal moderatore sul sito
Come rimuovere "I file sono stati salvati in" che viene mostrato di seguito.....
Questo commento è stato fatto dal moderatore sul sito
Ho appena modificato il codice dopo "Next i" e ha funzionato bene:
Avanti
Se xSaveFiles <> "" Allora
Se xMailItem.BodyFormat <> olFormatHTML Allora

Altro

End If
Questo commento è stato fatto dal moderatore sul sito
Ha funzionato, grazie per questo. Eliminato i messaggi nelle e-mail.
Rinomato 5 su 5
Questo commento è stato fatto dal moderatore sul sito
Funziona benissimo senza problemi! Grazie. Mi ha fatto risparmiare un sacco di tempo! Grazie, Josh
Questo commento è stato fatto dal moderatore sul sito
Grazie! Questo mi ha fatto risparmiare un sacco di tempo e frustrazione!
Questo commento è stato fatto dal moderatore sul sito
Posso farlo funzionare ma come e objSelection.Count è 2 ma salverà solo gli allegati sulla prima e-mail.
Questo commento è stato fatto dal moderatore sul sito
Questo è il codice in questo momento e salva tutti gli allegati, ma aggiunge solo testo al primo messaggio. Qualcuno mi può aiutare con questo? Public Sub SaveAttachments() 'Aggiorna 20170523 Dim objOL As Outlook.Application Dim objMsg As Outlook.MailItem Dim objAttachments As Outlook.Attachments Dim objSelection As Outlook.Selection Dim I As Long Dim lngCount As Long Dim strFile As String Dim strFolderpath As String Set objOL = CreateObject("Outlook.Application") Set objSelection = objOL.ActiveExplorer.Selection strFolderpath = "C:\Users\brianp\Documents\Attachments\" per ogni objMsg in objSelection Set objAttachments = objMsg.Attachments lngCount = objAttachments.Count 'Usa questo per testare MsgBox "Subject = " & objMsg.Subject & " lngCount = " & objAttachments.Count If lngCount > 0 Quindi For I = lngCount To 1 Step -1 strFile = objAttachments.Item(I).FileName strFile = strFolderpath & strFile objAttachments.Item(I).SaveAsFile strFile Next I End If If objMsg.BodyFormat olFormatHTML Then objMsg.Body = vbCrLf & "I file allegati sono stati salvati in " & "" & strFile & "" & vbCrLf & objMsg.Body Else objMsg.HTMLBody = "" & "Il file allegato e(s) sono stati salvati in " & "" & strFile & "" & "" & objMsg.HTMLBody End If Next ExitSub: Set objAttachments = Nothing Set objMsg = Nothing Set objSelection = Nothing Set objOL = Nothing End Sub
Questo commento è stato fatto dal moderatore sul sito
Quindi faccio clic sul collegamento "Kutools per Outlook" e vengo indirizzato a una pagina che non è quella, ma "Kutools: combina più di 300 funzioni e strumenti avanzati per Microsoft Excel".

Niente su Outlook. Perdita di tempo.
Questo commento è stato fatto dal moderatore sul sito
Ciao Davis,
Abbiamo creato un collegamento ipertestuale errato. Grazie per il promemoria! E scusa per l'inconveniente portato a te.
Questo commento è stato fatto dal moderatore sul sito
Grazie. Mi fa risparmiare un sacco di tempo.
Questo commento è stato fatto dal moderatore sul sito
Ho applicato questo VBA a poche e-mail. Come annullare questo? Non voglio quei messaggi in tutte le e-mail (i file sono stati salvati in .....). Per favore aiuto.
Questo commento è stato fatto dal moderatore sul sito
Ciao Priyanka, il codice VBA non supporta l'operazione di annullamento. Ci dispiace per l'inconvenienza.
Questo commento è stato fatto dal moderatore sul sito
Grazie! aiutami davvero molto!!
Questo commento è stato fatto dal moderatore sul sito
Il codice VBA ha funzionato alla grande! Grazie.
Questo commento è stato fatto dal moderatore sul sito
Il codice VBA funziona alla grande ma non verifica la presenza di nomi di file duplicati, semplicemente li sovrascrive. Si può aggiungere?

Dominio
Questo commento è stato fatto dal moderatore sul sito
Ciao Alan,
Il codice che ti ho risposto prima presenta dei problemi. Ho aggiunto nuovi codici al tutorial e il problema che hai menzionato è stato risolto. Per favore, dai un'occhiata e provalo. Grazie!
Non ci sono ancora commenti pubblicati qui
Carica Altre
Lasciate i vostri commenti
Pubblicazione come ospite
×
Valuta questo post:
0   Personaggi
Posizioni suggerite

Seguici

Copyright © 2009 - www.extendoffice.com. | Tutti i diritti riservati. Offerto da ExtendOffice, | Mappa del sito
Microsoft e il logo Office sono marchi o marchi registrati di Microsoft Corporation negli Stati Uniti e / o in altri paesi.
Protetto da Sectigo SSL