Outlook 2016: scaricare insieme gli allegati da diverse mail (PDF) (Aggiornato)

| |

Sono partito da un’esigenza segnalata da uno degli utenti in ufficio, il quale aveva bisogno di scaricare un grande numero di documenti PDF in un solo colpo, “catturandoli” da più mail già ricevute e messe da parte nel suo Outlook (una mail, un allegato PDF, questa la proporzione). Outlook non prevede questa necessità, e permette esclusivamente di scaricare tutti gli allegati –di una singola mail– in un solo colpo. Aggirare l’ostacolo però è possibile, lo si fa tramite una porzione di codice VBA da andare a inserire nella finestra del Microsoft Visual Basic, richiamabile da ogni singolo programma di Office.

Outlook 2016: scaricare insieme gli allegati da diverse mail (PDF)

Inizialmente pensato come un comportamento da adottare in seguito alla ricezione di una nuova mail (con una regola ad-hoc, per ingaggiare uno script), si è trasformato in un pulsante da andare a inserire nella barra multifunzione di Outlook, un “tool” da tenere a portata di mano in caso di necessità, che a oggi permettono di individuare e scaricare file PDF, ma che con una piccola modifica potrebbe intercettare qualsiasi altra cosa.

Il funzionamento, spiegato in maniera semplice, è questo:

  • si seleziona una o più mail tra quelle del proprio Outlook,
  • si fa clic su un pulsante messo appositamente nella barra multifunzione del client di posta elettronica,
  • si attende che lo script verifichi l’esistenza di file PDF negli allegati delle mail selezionate, quindi li estragga e li vada a inserire in una apposita cartella sul Desktop (che verrà utilizzata se già esistente, creata se invece non presente). Il tutto dura qualche secondo (minuto, se le mail da analizzare sono davvero tante).

Tradotto in passaggi da riprodurre sul proprio Outlook, la cosa cambia, ed è chiaramente più tecnica. Te la faccio il più semplice possibile.

Procedure in comune: notifica per le macro non firmate

Prima di partire, dovrai andare a modificare il comportamento del Centro di sicurezza del tuo Outlook affinché ti faccia comparire degli avvisi a video nel caso in cui venga tentata l’esecuzione di una Macro non firmata. Questo permetterà allo script aggiunto (ne parliamo dopo) di funzionare correttamente, in quanto “home made” (fatto in casa, dai).

Per farlo, dovrai andare in FileOpzioniCentro protezioneImpostazioni Centro protezioneImpostazioni macro e selezionare la voce “Visualizza notifiche per tutte le macro”:

Outlook 2016: scaricare insieme gli allegati da diverse mail (PDF) 1

Un clic su OK per confermare la modifica e chiudere la finestra, sei a posto.

Procedure in comune: VBA

Per entrambi i tipi di comportamento che puoi scatenare in Outlook (salvataggio dei PDF tramite pulsante nella barra multifunzione, oppure tramite regola che lancia lo script), dovrai sempre andare ad aprire la finestra di Microsoft Visual Basic che richiami tramite la combinazione di tasti ALT + F11.

Per facilitarti le cose, ho già impacchettato ciò che ti serve per ottenere il risultato desiderato. Ho scritto due file BAS (codici importabili in VBA) che ho pubblicato su Gist. Il primo è quello relativo al salvataggio scatenato da una regola, il secondo per quello tramite pulsante (quindi manualmente). Scarica ciò che ti serve (fai clic in alto a destra sul pulsante Download ZIP, quindi estrai il contenuto e recupera il file con estensione bas):

Torna nella finestra di Microsoft Visual Basic, fai clic con il tasto destro su Progetto1 e seleziona Importa file, seleziona quindi il file che il file relativo al codice che ti interessa utilizzare per terminare l’importazione, poi fai clic su Salva (nella barra superiore degli strumenti, altrimenti c’è la combinazione da tastiera CTRL + S).

Outlook 2016: scaricare insieme gli allegati da diverse mail (PDF) 2

Nel caso in cui tu volessi entrambi le funzioni (quindi tutto il codice sorgente) fai riferimento a questo ulteriore collegamento a Gist.

Salvare PDF con una regola

Prima di procedere, apri un prompt dei comandi, copia e incolla questa stringa:

REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Security" /v EnableUnsafeClientMailRules /t REG_DWORD /d 1 /f

Ciò permetterà di sbloccare la possibilità di utilizzare / richiamare uno script all’interno di una regola di Outlook, opzione disabilitata di default da Microsoft (già da qualche tempo).

Fatto ciò, se hai già caricato il mio script tra i moduli VBA, dovrai solo creare una nuova regola e –nella seconda schermata di avanzamento– chiedergli di eseguire uno script, troverai quello precedentemente caricato tra i disponibili (forse sarà l’unico), utilizzalo e vai avanti con la sua costruzione:

Outlook 2016: scaricare insieme gli allegati da diverse mail (PDF) 3

Troverai (nel caso in cui la regola entri in funzione) i file PDF all’interno della cartella Attachments sul tuo Desktop.

15/1/20

Ringrazio Antonio che mi ha segnalato nei commenti un problema con lo specifico codice della regola che ho provveduto a correggere con colpevole ritardo. Ho quindi rilasciato la versione 0.3 di SavePDF_Rule.bas ora disponibile su Gist, caricato anche nello spazio Box di cui parlo in chiusura articolo. Ho fatto lo stesso per il modulo BAS completo (SavePDF_Module.bas). Il problema non riguarda certamente quello del singolo SavePDF_Button.bas. La mia svista causava un errore di runtime a ogni arrivo di un’email contenente un allegato PDF.

Salvare PDF con un pulsante

Dando per scontato che tu abbia già importato il codice VBA (come già descritto un paio di paragrafi fa),fai clic con il tasto destro sulla barra multifunzione di Outlook e seleziona la voce Personalizza barra multifunzione. Fai clic sul pulsante “Nuovo gruppo” (in basso a destra nel popup comparso), posizionalo dove lo preferisci spostandolo con le frecce su / giù disponibili lateralmente nella finestra a video, quindi rinominalo (suggerisco “Tools“).

Seleziona ora la voce “Macro” nella colonna sinistra “Scegli comandi da:” e aggiungi Progetto1.ExportAttachments, quindi rinominalo in (per esempio) “Estrai PDF”:

Outlook 2016: scaricare insieme gli allegati da diverse mail (PDF) 4

Un clic su OK per salvare e chiudere la finestra, il risultato dovrebbe assomigliare a questo:

Outlook 2016: scaricare insieme gli allegati da diverse mail (PDF) 5

Puoi verificare il funzionamento della modifica selezionando manualmente delle mail e facendo clic sul pulsante. Troverai (se ne esistono, e quindi se vengono estratti) i file PDF all’interno della cartella Attachments sul tuo Desktop.

In conclusione

Attento: ricordati che, allo stato attuale delle cose, due allegati con lo stesso nome non possono coesistere nella stessa cartella Attachments (andrebbe modificato lo script), l’ultimo estratto sovrascrive sempre quello estratto precedentemente.

Lo script è capace – dalla versione 0.2 – di salvare file PDF con lo stesso nome perché antepone data e ora della ricezione dell’email che contiene l’allegato salvato.

Salvo errori nel processo di “installazione” (se così posso chiamarlo), tutto dovrebbe funzionarti alla perfezione, permettendoti di catturare i file PDF che vengono allegati alle mail che ricevi e portarli nella cartella Attachments sul tuo Desktop. Nessuno però ti impedisce di modificare lo script e fargli verificare l’esistenza di altre estensioni, come doc, docx, xlsx e chi più ne ha più ne metta. Trovi diversi riferimenti in merito nel sito web che più mi ha aiutato a plasmare il risultato di cui avevo necessità (slipstick.com/developer/save-attachments-to-the-hard-drive).

Tutto il set di script e modifiche da operare vengono rilasciate –come sempre– “as is“, con nessuna garanzia o responsabilità. Tutto è stato provato decine di volte, installato su più PC, fatto funzionare senza battere ciglio, ma sappiamo tutti benissimo che ogni configurazione differisce dall’altra per delle “virgole“. Quella certamente testata si è basata su Outlook 2016 x64 (1708 build 8431.2079). Ne ho caricato una copia completa sul mio spazio box, nel caso in cui ti serva scaricare tutto in un colpo: go.gioxx.org/outlooksavepdf.

L’area commenti, come al solito, resta a disposizione per eventuali suggerimenti e domande inerenti questo articolo.

Buon lavoro!

L'articolo potrebbe non essere aggiornato

Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)

Gioxx's Wall

Se hai correzioni o suggerimenti puoi lasciare un commento nell'apposita area qui di seguito o contattarmi privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! Satispay / PayPal / Buy Me A Coffee / Patreon

Condividi l'articolo con i tuoi contatti:
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

17 Commenti
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Roberto Ugolini
Roberto Ugolini
17/11/2017 11:05

Ciao Gioxx, ottimo lavoro questo del salvataggio automatico di più “PDF”. Secondo te è possibile con qualche piccola modifica impostare anche la stampa automatica (sulla stampante predefinita del PC che sta eseguendo lo script, per forza) del documento PDF allegato ad una mail?
Ovvero: creare una regola in Outlook che, alla ricezione di una particolare mail (riconoscibile dall’oggetto) stampi il corpo della mail (già previsto dalle regole standard di Outlook) e faccia partire lo script che stampi l’allegato PDF della mail?
Ciao e grazie. Roberto

Roberto Ugolini
Roberto Ugolini
Reply to  Giovanni
17/11/2017 15:09

Ah ok grazie del consiglio.
Folder agent non è più disponibile… vedo se trovo qualcosa di simile. ;-)

Roberto Ugolini
Roberto Ugolini
Reply to  Giovanni
17/11/2017 15:14

Ho trovato questo in rete:
http://punto-informatico.it/s_3254833/Download/News/autoprint.aspx

Ne sai qualcosa?

trackback
SaveModule.bas 0.2 per Outlook 2016 (estrazione PDF dagli allegati) - Gioxx's Wall
28/12/2017 09:30

[…] Outlook 2016: scaricare insieme gli allegati da diverse mail (PDF) […]

Silvana
Silvana
19/09/2019 15:30

Ciao,
io e le mie colleghe non sappiamo come poterti ringraziare. Eravamo veramente in difficoltà per il problema di scarico e stampa di allegati PDF. Per esigenze lavorative ne riceviamo molte e la perdita di tempo era veramente insostenibile. Grazie alle tue istruzioni (molto chiare e dettagliate) che siamo riuscite a seguire pur non avendo molta dimestichezza con l’informatica abbiamo risolto il nostro problema. Grazie di cuore. Silvana

Stefano Sala
Stefano Sala
13/03/2020 20:23

Ciao Giovanni,
intanto vorrei ringraziarti, davvero utile e ben fatto il tuo articolo!
Sto affrontando un problema simile in cui gli allegati non sono .pdf bensì .esi, ho quindi modificato la macro come logico sostituendo “pdf” con “edi” e la regola gira.
Il mio problema però è che le mail con allegati esi, oltre ad essere parecchie (circa 4000 per ora), arrivano tramite server sul client Thunderbird e vengono importate in outlook in un formato che non gli consente la visualizzazione dell’allegato.

Stefano Sala
Stefano Sala
14/03/2020 13:14

Ciao Giovanni,
intanto vorrei ringraziarti, davvero utile e ben fatto il tuo articolo!
Sto affrontando un problema simile in cui gli allegati non sono .pdf bensì .esi, ho quindi modificato la macro come logico sostituendo “pdf” con “edi” e la regola gira.
Il mio problema però è che le mail con allegati esi, oltre ad essere parecchie (circa 4000 per ora), arrivano tramite server sul client Thunderbird e vengono importate in outlook in un formato che non gli consente la visualizzazione dell’allegato.
Ti allego una foto a completare

Giovanni
Giovanni
Reply to  Stefano Sala
14/03/2020 17:20

Ciao Stefano, ti ringrazio per i complimenti, fanno sempre piacere.
Il tuo problema chiaramente è ben differente e nulla può lo script se il metodo di passaggio di quelle email è differente rispetto alla più classica delle ricezioni da server di posta a Outlook.

Bisognerebbe provare a modificare quel flusso e permettere a Outlook di fare il suo lavoro in collaborazione con lo script, diversamente c’è bisogno di inventarsi qualcosa per Thunderbird, in questo caso però c’è bisogno di una manina da chi sviluppa componenti aggiuntivi, io lo faccio a livello molto amatoriale e non sarei capace di replicare lo script Outlook!

l3tsgo
l3tsgo
04/02/2021 04:56

Buongiorno, trovo molto utile il tuo lavoro e spero tu mi possa dare una mano: su Outlook gestisco diverse caselle pec per cui vorrei impostare la regola di salvataggio degli allegati “.xml”. Il che non sarebbe un problema, se non fosse che in Outlook le mail PEC si presentano come mail con in allegato un file “.eml” che contiene gli allegati “.xml” che vorrei salvare. Sarebbe possibile quindi impostare lo script per salvare, di fatto, l’allegato dell’allegato?

Giovanni
Giovanni
Reply to  l3tsgo
06/02/2021 11:58

Ciao l3tsgo, messa così la risposta dovrebbe essere “no” perché il mio script può tranquillamente essere riadattato per scaricare l’allegato in EML, non può però sbirciare ulteriormente al suo interno e quindi ti lascerebbe un po’ appiedato per il tuo scopo.

Quello che però mi viene in mente è che tu potresti davvero salvare i file EML con il mio script in Outlook e poi usare un secondo script (esterno a Outlook) per estrarre da tutti gli EML il loro allegato.

Cosa ne pensi? Puoi fare qualche test in autonomia (ricorda sempre di fare un backup prima) modificando il mio script e dicendogli di scaricare l’estensione EML al posto di PDF, successivamente dovrai lavorare con un VBScript che estrae gli allegati dai file EML, dai un’occhiata qui: https://stackoverflow.com/a/19255575

l3tsgo
l3tsgo
Reply to  Giovanni
08/02/2021 03:56

Proverò a smanettarci un po’. Grazie per i suggerimenti!

Giovanni
Giovanni
Reply to  l3tsgo
09/02/2021 14:17

Ottimo! Fammi poi sapere se riesci nell’intento! :-)

Paolo Della Rocca
Paolo Della Rocca
17/03/2021 05:53

Grazie, spiegato molto bene e funziona benissimo.

Giovanni
Giovanni
Reply to  Paolo Della Rocca
17/03/2021 07:45

Ottimo, grazie a te per il commento e la conferma :-)