Archives For Microsoft Outlook 2016

So benissimo quello che stai pensando, che forse un rilascio a così stretto giro dall’altro (lo 0.2 è dello scorso 28 dicembre) è un tantino anomalo, e l’osservazione può anche starci. Il problema è che ho trovato un’anomalia strana per un programma di Microsoft (e più in generale per il suo sistema operativo), il bottone che scatena la macro per esportare i file PDF sul Desktop partendo da una o più mail da te selezionate, tiene conto della differenza tra “PDF” e “pdf, come stessimo parlando di case-sensitive.

SaveModule.bas 0.3 per Outlook 2016 (estrazione PDF dagli allegati)

Me ne sono accorto grazie alla segnalazione di un utente in ufficio, che riusciva a esportare correttamente file con estensione “pdf“, perdendo però per strada alcuni file che avevano come estensione un “.PDF” in maiuscolo. Pur faticando a credere a un case-sensitive prerogativa dei sistemi Unix-Like, ho modificato nuovamente lo script per adattarlo all’esigenza, e stavolta mi sono deciso a integrare il costrutto Case al suo interno, per sostituire l’If semplice che ha fatto fino a ora il suo dovere.

Cosa cambia?

Questo, nello specifico:

sFileType = LCase$(Right$(strFile, 4))

che dopo aver ottenuto il nome del file (strFile = sName & objAttachments.Item(i).FileName), va a estrapolarne le ultime 4 posizioni (in pratica il “.ext” dove ext è l’estensione del file) e fa partire un costrutto Case all’interno del quale si possono specificare più estensioni da portare fuori nella cartella degli Attachments:

Select Case sFileType
Case ".PDF", ".pdf"
 'Combine with the path to the Temp folder.
 strFile = strFolderpath & strFile
 'Save the attachment as a file.
 objAttachments.Item(i).SaveAsFile strFile
End Select

Il resto rimane, per evidenti motivi, invariato. Tu potrai tranquillamente aggiungere ulteriori estensioni di cui tenere conto ponendo un’ulteriore virgola dopo il “.pdf” e aggiungendo magari un formato immagine, per esempio Case ".PDF", ".pdf", ".png".

Ho già aggiornato gli script rilasciati via GitHub, compreso il modulo unico di salvataggio che integra la macro da attivare con il pulsante e la regola automatica di ingresso posta. Trovi qui il codice della macro con pulsante: gist.github.com/gioxx/b7b16bdd96d3541bdfb29b23ed1d7e1d, qui invece quello del modulo intero: gist.github.com/gioxx/1e703b56db11b6363e2d07f4b6617bd9. Ho aggiornato anche la cartella condivisa su Box nel caso tu voglia scaricare tutto il materiale in un solo colpo: app.box.com/s/5ksruqc3pi74fumkbt4wg3avb1f6tmzf.

Per modificare il comportamento del tuo Outlook, potrai semplicemente richiamare la combinazione ALT + F11 da tastiera (per aprire l’editor Visual Basic, nda), selezionare tutto il codice relativo al modulo di salvataggio, cancellarlo, copiare il nuovo codice da Gist e incollarlo, salvando poi la modifica. Il tutto sarà immediatamente operativo.

È giusto ricordare ancora una volta che anche in questa nuova versione del codice non posso fare nulla per le Shared Mailbox caricate in Auto-Mapping e senza copia cache locale su Outlook. Ciò vuol dire che se utilizzi le caselle di posta condivise collegandoti direttamente al server (basta togliere l’opzione “Scarica cartelle condivise” dalle opzioni avanzate del tuo account Exchange), non potrò salvare alcunché nella cartella sul tuo Desktop, perché in realtà quei PDF non esistono sul tuo hard disk, ma vengono scaricati secondo necessità quando fai doppio clic su di loro (o quando chiedi a Outlook di salvarli in una cartella specifica).

Al solito, l’area commenti è a tua totale disposizione per richiedere ulteriori informazioni o rispondere a qualche tuo dubbio. Puoi usare invece Gist per proporre modifiche o miglioramenti al codice.

Buon lavoro!


Immagine di copertina: Caspar Rubin on Unsplash
Condividi l'articolo con i tuoi contatti:

Ammesso che l’argomento abbia solleticato il tuo interesse, il SaveModule.bas è quel file di cui ti ho parlato qualche tempo fa in un articolo dedicato all’estrazione di file PDF dagli allegati delle tue email in Outlook 2016:

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

A seguito di un problema nato da mail (tante) inviate con un allegato sempre diverso (nel contenuto) ma sempre con lo stesso nome (!!!), ho optato per mettere una pezza alla mancanza dello scorso ottobre riguardo l’estrazione e sovrascrittura di file con nome uguale, non pensavo sarebbe stato necessario “e invece“. Ho quindi modificato i due file .bas precedentemente rilasciati (SavePDF_Rule e SavePDF_Button) per integrare il nuovo controllo e correggere (solo per il bottone) una dimenticanza che non inficiava comunque sul risultato finale.

Cosa è cambiato

Nello specifico? Questo:

dtDate = objMsg.SentOn
sName = Format(dtDate, "ddmmyyyy", vbUseSystemDayOfWeek, vbUseSystem) & "_" & Format(dtDate, "hhnnss", vbUseSystemDayOfWeek, vbUseSystem) & "-"

e quindi:

strFile = sName & objAttachments.Item(i).FileName

Che tradotto in parole povere vuol dire che vado a ricavarmi la data e l’ora di ricezione della email contenente il PDF allegato, quindi antepongo a quel PDF il dato appena ricavato, nella modalità ddmmyyyy (due cifre per il giorno, due per il mese, quattro per l’anno, inserendo gli zeri quando e dove necessario), facendo seguire poi l’ora nella modalità hhnnss (due cifre per l’ora, due per i minuti, due per i secondi). Il risultato ti permette di avere più file con lo stesso nome –in origine– ma diverso nella loro destinazione (la cartella “Attachments” sul tuo Desktop, ricordi?).

Puoi tranquillamente copiare l’intero nuovo codice e andarlo a sostituire nel tuo Outlook che esegue già il vecchio, ho aggiornato anche i file già a tua disposizione nella cartella su box.com: app.box.com/s/5ksruqc3pi74fumkbt4wg3avb1f6tmzf. Una volta copiato e incollato il codice (sovrascrivendo quello già presente) ricordati di salvare la modifica (nell’editor Visual Basic di Outlook), sarà immediatamente operativa. Il resto non cambia.

Ricordati che

Rimane ancora lì presente la possibilità di integrare nello script fornito anche ulteriori formati da scaricare dagli allegati mail, come detto in precedenza:

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).

e che anche in questa nuova versione del codice non posso fare nulla per le Shared Mailbox caricate in Auto-Mapping e senza copia cache locale su Outlook. Ciò vuol dire che se utilizzi le caselle di posta condivise collegandoti direttamente al server (basta togliere l’opzione “Scarica cartelle condivise” dalle opzioni avanzate del tuo account Exchange), non potrò salvare alcunché nella cartella sul tuo Desktop, perché in realtà quei PDF non esistono sul tuo hard disk, ma vengono scaricati secondo necessità quando fai doppio clic su di loro (o quando chiedi a Outlook di salvarli in una cartella specifica).

Mi sembra ci sia tutto, anche per stavolta passo e chiudo :-)

Buon lavoro!


Photo by Kevin on Unsplash
Condividi l'articolo con i tuoi contatti:

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.

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.

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: app.box.com/s/5ksruqc3pi74fumkbt4wg3avb1f6tmzf

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

Buon lavoro!

Condividi l'articolo con i tuoi contatti:

Non è una novità, già da qualche tempo Outlook 2016 propone un pulsante chiamato “Archivia” all’interno della sua barra multifunzione, il quale scatena un’azione predefinita che sposta la mail (singola, o anche un gruppo di) in una cartella denominata (con molta fantasia) Archivio.

Non si tratta però di un vero e proprio archivio, è più un effetto placebo come lo spostare la polvere sotto al tappeto. Non lo vedo, quindi non c’è. Una cosa simile si poteva ottenere anche con un’azione rapida e una cartella creata ad-hoc, ma tant’è. E se il pulsante però venisse premuto per sbaglio? Come rimediare e fare in modo che non accada più?

Outlook 2016: disattivare il pulsante "Archivia"

Outlook 2016 include nella scheda Home della barra multifunzione una caratteristica di archiviazione rapida che invia i messaggi nella cartella Archivio. Gli utenti di Office 365 per le aziende hanno accesso anche a un archivio online.

Nota: per supportare la funzione di archiviazione tra Outlook 2016, Outlook per iOS e Android e Outlook sul web, viene automaticamente creata la cartella di archiviazione . Questa cartella rispetta i criteri di conservazione che potrebbe essere la cassetta postale, tra cui l’eliminazione dei messaggi di posta elettronica.

Il documento completo è disponibile all’indirizzo support.office.com/it-it/article/Caratteristica-Archivio-in-Outlook-2016-per-Windows-25f75777-3cdc-4c77-9783-5929c7b47028, e descrive per filo e per segno il comportamento della funzione. L’archivio online (ciò che viene definito in Exchange un in-place archive) è tutto un altro mondo, e si tratta di un vero archivio, separato dalla propria casella di posta elettronica e soggetto a regole di movimentazione posta che possono essere modificate in qualsiasi momento.

Tornando sull’argomento principale, il tasto “Archiviapuò essere disabilitato, almeno su Outlook, in un colpo solo e in maniera centralizzata, evitando così il dover mettere mano su ciascuna postazione, o lasciar modificare all’utente le preferenze del proprio client andando a rimuovere il pulsante dalla barra (personalizzandola, come permesso da ogni applicativo di Office). La soluzione arriva da slipstick.com e interviene sul registro, aggiungendo una chiave che nasconde l’ID di quel pulsante:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\16.0\Outlook\DisabledCmdBarItemsList]
"TCID1"="26308"

(trovi copia del file di registro qui). Occhio però: la soluzione è valida se nel registro non esiste già un TCID1, altrimenti occorrerà incrementare il progressivo dello stesso per evitarne la sovrascrittura, ognuno dovrà separatamente nascondere un ID differente (per esempio: TCID1, TCID2, ecc.):

Warning! If you have other commands disabled using policy, do not use this registry key. It will replace the command disabled in TCID1. Edit the registry yourself, incrementing TCID to the next available number.

La modifica è immediata e non servirà riavviare il PC, ti basterà attendere che l’utente chiuda e avvii nuovamente il suo client di posta elettronica (presumibilmente, noterà la modifica il mattino seguente, se è uno di quelli che apre-chiude Outlook una sola volta al giorno). Il suggerimento è quello di utilizzare la console di Group Policy Management per andare a ritoccare il comportamento dei client interessati, o al massimo uno script che intervenga all’avvio del sistema (meglio la prima proposta, se puoi).

E per OWA?

Se tu o i tuoi utenti utilizzano OWA, sappi che allo stato attuale non puoi togliere la voce “Archivia” disponibile nel clic del tasto destro, probabilmente Microsoft lo permetterà (via console) in futuro. Cambia invece la questione relativa all’applicazione per smartphone e tablet, la quale può essere ritoccata nel comportamento andando in ImpostazioniOpzioni di scorrimento.

Da qui potrai evitare di far entrare in funzione l’archiviazione in locale delle tue mail nel caso in cui ti scappi uno swipe verso destra.

Questo è quanto, almeno per il momento.

Buon lavoro!

Condividi l'articolo con i tuoi contatti:

Pillole

Le pillole sono articoli di veloce lettura dedicati a notizie, script o qualsiasi altra cosa possa essere "divorata e messa in pratica" con poco. Uno spazio del blog riservato ai post "a bruciapelo"!

Piccolo consiglio dedicato a chi deve gestire una risorsa Exchange (quindi Outlook) che deve passare per approvazione di un referente ben preciso, ma che per qualche motivo può e deve essere prenotabile dalla dirigenza senza alcuna approvazione (ammesso che la risorsa sia libera, ovviamente). Questo comportamento fa parte del pacchetto di opzioni standard messe a disposizione da Office 365, basta solo sapere dove mettere le mani.

Exchange: prenotazione risorse con approvazione (ma non per tutti)

Contrariamente a una mailbox utente standard, questa modifica andrà operata tramite WebMail, ammesso che tu abbia le autorizzazioni per gestire quella relativa alla risorsa che ti interessa toccare. Collegati quindi all’indirizzo di OWA (outlook.office.com/owa/nomerisorsa@dominio.onmicrosoft.com). Apri le Impostazioni (la classica icona a rotella in alto a destra nella pagina, nda), spostati poi in Impostazioni delle app personali (voce in basso a destra, almeno a oggi che scrivo l’articolo) → Calendario.

A questo punto ti basterà modificare la voce relativa alle autorizzazioni di pianificazione, per la precisione la prima: “Queste persone possono eseguire automaticamente la pianificazione se la risorsa è disponibile“. Questa autorizzazione è in grado di scavalcare i delegati che si occupano di approvare (o meno) la prenotazione della sala, adattandosi così alle esigenze di un membro di più alto livello (prova a pensare al dirigente e alla sua segretaria, tanto per fare un esempio).

Exchange: prenotazione risorse con approvazione (ma non per tutti) 1

Salva la tua modifica, il gioco è fatto, è tutto immediatamente operativo.

Buon lavoro :-)

Condividi l'articolo con i tuoi contatti: