Archives For Microsoft Office 365

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:

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"!

È un periodo parecchio impegnativo dal punto di vista professionale e privato, un mese ricco di uscite videoludiche che assorbono molto del mio già risicato tempo libero, portandomi a passare più ore in compagnia di fuorigio.co che con il mio blog personale. Ho tanti nuovi prodotti con i quali sto giocando e conto –quanto prima– di parlartene, sii fiducioso! :-)

Quello di oggi è un semplice articolo “pillola” dedicato al mondo Office 365 (di cui solitamente parlo tanto, ma in associazione al panorama Windows) e macOS, il sistema che prediligo e che utilizzo quando mi trovo tra le mura di casa. Che cosa devi fare se c’è qualche problema in una delle applicazioni (o addirittura in tutta la Suite) e vuoi effettuare un downgrade?

Office 365 e macOS: quando il downgrade non è previsto

Non ti farà piacere sentirlo, ma la risposta è “non puoi farci nulla“. Contrariamente a Office 365 ProPlus installato su Windows, su macOS non esiste ancora la possibilità di effettuare downgrade, risultato della mancanza del Click2Run già ben rodato (anche se non privo di sbavature) sul sistema operativo di Redmond.

Come procedere

Da procedura Microsoft, dovrai disinstallare i tuoi prodotti (tutti, o anche singolarmente in base all’esigenza, se preferisci), quindi scaricare e reinstallare il pkg di Office 2016 (io faccio i conti con questo, essendo abbonato Office 365) che andrà a sostituire le parti danneggiate della suite. A me è servito farlo perché sono iscritto al circuito veloce Insider, e l’ultima versione di Excel (20171017, nda) ha dei bug talmente bloccanti da renderla pressoché inutilizzabile.

La disinstallazione è cosa assai semplice su macOS, e quasi certamente saprai cosa fare. In caso contrario, qui trovi i banali passaggi da eseguire, puoi fermarti alla cancellazione dei file principali delle applicazioni, al resto ci pensa Dr.Cleaner, che spero tu abbia già avuto modo di provare e tenere installato sul tuo Mac (te ne avevo parlato qui):

Update

aggiornamento 24/10/17: Ho sostituito il link di download del pkg Microsoft con uno più aggiornato.

A questo punto potrai scaricare il file pkg stabile di Office (anche una vecchia versione, tanto poi verrà aggiornata dai server di Microsoft) e procedere con una reinstallazione. Trovi un pacchetto certamente funzionante sul CDN di Microsoft: officecdn.microsoft.com/pr/C1297A47-86C4-4C1F-97FA-950631F94777/OfficeMac/Microsoft_Office_2016_15.39.17101000_Installer.pkg, io per sicurezza ne ho caricato online una copia anche sul mio spazio Mega (l’account -ti ricordo- è quello gratuito e limitato, chi prima arriva, meglio alloggia ;-)).

In alternativa, qui trovi i pacchetti per singola applicazione (o l’intera Suite più aggiornata): support.office.com/en-us/article/Update-history-for-Office-2016-for-Mac-700cab62-0d67-4f23-947b-3686cb1a8eb7

Ora puoi tornare a lavorare in santa pace, almeno fino al prossimo update ;-)

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:

Tempo fa ti avevo parlato di un problema riguardante un mancato rollback della versione 16.0.8229.2073 (1706) di Microsoft Office 365 ProPlus (la versione 2016), risolto scaricando e installando un diverso pacchetto, inferiore a quello difettoso. Nel frattempo i problemi sono stati risolti e altri sono sorti, facendomi scegliere una diversa strada per un certo gruppo di utenti ai quali ho tolto la possibilità di aggiornare Office dal canale un po’ più rapido di Microsoft.

Dato che si tratta di semplici modifiche alle chiavi di registro, ho optato per la scrittura di un batch che potesse automatizzare le operazioni. Te lo propongo oggi, così che possa tornarti utile in caso di necessità, da tenere quindi da parte nella solita chiave USB degli strumenti da avere sempre a portata di mano :-)

Office 365 ProPlus (2016): selezione del canale di aggiornamento

Scritto a luglio e utilizzato nel corso del tempo, lo condivido e ti spiego com’è che funziona:

Update

Aggiornamento di ottobre: ho modificato lo script correggendo una svista che tornava a disabilitare gli aggiornamenti di Office quando veniva richiesta la riattivazione. Ne ho approfittato per integrare una nuova voce di menu (la 7) che effettua la lettura del canale di aggiornamento al quale Office si appoggia (fa una lettura da registro di sistema). Ogni voce selezionata attendere ora un colpo di invio (o altro pulsante da tastiera) per tornare a mostrare il menu principale del batch.

Il codice si basa sul fatto che:

  • l’aggiornamento arriverà dai server di Microsoft e non da una location interna alla tua rete (updatepathnon viene infatti valorizzato);
  • non c’è una versione d’arrivo dichiarata (come sopra, updatetargetversion non viene valorizzato);
  • l’unica voce che cambia (in base all’esigenza) è sempre quella relativa al canale di aggiornamento (updatebranch prende il valore in base al ramo di aggiornamento scelto).

è inoltre possibile (e previsto) che una postazione possa avere la necessità di bloccare ogni futuro aggiornamento, continuando quindi a utilizzare solo e sempre quell’unica versione di Office già a bordo. Alla stessa maniera, potrai sempre tornare indietro e chiedere a Office di aggiornarsi, in un secondo momento. In entrambi i casi, la chiave di registro da andare a ritoccare è la enableautomaticupdates.

Il batch è stato testato con successo su configurazioni Windows 7 e 10, con Office 2016 (365 ProPlus) a bordo, installato chiaramente tramite C2R. Potrai scaricarlo direttamente da GitHub e avviarlo –come amministratore locale o di dominio– sul PC che ti interessa. Se l’intervento è invece da portare a termine su più PC, ti consiglio di prelevare dal codice le chiavi di registro che ti interessano, quindi darle in pasto a uno strumento di distribuzione software (come Kace).

Buon lavoro! :-)

Condividi l'articolo con i tuoi contatti: