Il bisogno e’ molto semplice:
- abbiamo una serie di fogli excel (report) da distribuire in modo selettivo a un insieme di colleghi.
- Vogliamo creare file excel specifici per ogni collega (gruppo di colleghi) contenente i report ad essi destinati
- vogliamo poter includere in una mail tale file excel (possibilmente senza formule o riferimeni a fogli esterni),
- vogliamo poter popolare automanticamente con la mail dei destinatari il campo “A:”
in modo che sia necessario solo scrivere qualcosa nel testo del messaggioe premere il pulsante “Invia”
Il tool scaricabile da questa pagina fa esattamente questo: e’ un foglio elettronico che automaticamente compone i report secondo le indicazioni presenti su uno dei suoi fogli, salva tale files in una directory selezionata e allegare tali file in mail preimpostate.
Funzionamento del tool:
Il tool contiene 4 fogli. Tre report, in realta’ sono tre fogli popolati “a caso” e un foglio per il controllo del tool: DistributionTable
- Per prima cosa scegliere una directory dove verranno salvati i file di reportistica generati. Adesso la directory scelta e’ C:\export\ . Modificatela a vostro piacere e create sul vostro HD o disco di rete tale directory scelta. Attenzione solo ai nomi: qualsiasi sia la directory che utilizzerete, nel foglio excel dovrete aggiungere la barra alla fine della stessa “\” esattamente come e’ ora.
- Cambiate i nomi delle email (a meno che non vogliate inviare i vostri report a me). Se volete inviare la mail (il report) a piu’ utenti, semplicemente, scrivete nelle celle in colonna “A” i vari indirizzi email separati dal punto e virgola “;” esattamente come fareste in una mail normale.
- Usate la colonna B come campo descrittivo, non viene usata dalla macro ma e’ a vostra disposizione per note, commenti, desctrizioni etc.
- Cambiate i nomi dei report in colonna C
- Premete il tasto grigio nel foglio di lavoro.
La macro scorre i nomi dei fogli a partire dalla colonna “D” e a seconda di dove trova una x (attenzione la macro cerca solo la “x” e NON la “X” maiuscola o qualsiasi altra lettera/numero), include il foglio con tale nome nel report che va a salvare.
La macro crea un secondo foglio, trasforma tutte le formule in valori e lo salva nella directory indicata.
Ultima cosa, la macro allega tale file in una nuova mail che ha come desitnatari gli indirizzi che trova in colonna A. In questo momento la macro spedisce due file di reportistica, il primo conterra’ duefogli, il secondo conterra’ tre fogli. Incidentalmente invia tali report allo stesso indirizzo di posta.
Utilizzo del tool:
e’ molto piu’ semplice allegare in questo file i report piuttosto che riportare le logiche di questo file in un file di reportistica. Il motivo? Nel file sono stati preimpostati i riferimenti alle libreie necessarie e sono state impostate le logiche attraverso macro.
Per poter utilizzare il tool dovete seguire i seguenti passi:
- salvare il file sul proprio disco.
- copiare e incollare i fogli di reportistica dal file excel in questo “dispatcher”.
- Ovviamente la cosa piu’ semplice da fare e’ la seguente: ammettiamo che aveteun file excel che si chiama “report.xlsx”. potrete salvare questo dispatcher come “report.xlsm” nella stessa directory. Il file dovra’ essere un “.xlsm” in quanto contiene macro da eseguire.
- andate nel foglio “DistributionTable” e modificate i nomi dei fogli in riga 3 a partire dalla colonna “D”. Qui inserirete i nomi dei fogli ce corrispondono ai vari report che avete appena copiato.
- inserite in colonna A, a partire da riga 4, gli indirizzi email dei destinatari dei vostri report.
- componete il nome di ogni report in cononna C
- mettete le “x” in corrispondenza dei report che vorrete inviare a ogni persona
- modificate/create la directory di appoggio dove verranno salvati i file di reportistica prima dell’invio
- la macro aggiungesempre la data di fronte a ogni file salvato e a ogni mail inviata. Dovreste quindi creare mano a mano un archivio di tutti i report che inviate automaticamente.
- premete il tasto “Crea emails” e attendete che vengano create le mail da inviare.
- a questo putnose tutto funziona bene potete tranquillamente cancellare i fogli “Sheet3” “Sheet4” e “Sheet5”.
Ovviamente questo file funziona con Excel e con Outlook. Non e’prevista l’integrazione con nessun altro sistema di posta.
Modifiche/Migioramenti del codice:
Premendo ALT+F11 potete entrare nell’areadi editazione del codice. Vederete che il codice e’ molto semplice, si possono fare molto facilmente delle modifiche/miglioramenti. Un esempio: e’ possibile inserire automaticamente un testo nelle mails oppure inviare automaticamente le mail invece di visualizzarle a schermo.
Siete liberi di modificare il codice a vostro piacimento, vi prego di farmi saperecome lo modificate, possiamo ospitaretranquillamente su questo sito le vostre idee!
Aggiornamento:
Abbiamo aggiunto qualche ulteriore funzionalita’ al file:
ora e’ possibile:
- Inserire in CC un secondo elenco di email
- Inserire un testo nel corpo della mail: sara’possibile, per esempio usando la funzione CONCATENA, inserire testi che si adattano automaticamente al contenuto del report per esempio riportando i totali o selezionando una frase specifica all’interno di un elenco di frasi pre-impostate
- selezionare se si vuole inviare il report in PDF o in EXCEL. Ogni singolo report puo’ essere inviato in uno o nell’atro modo.
Aggiornamento 2:
Abbiamo aggiunto una funzionalità richiesta dal nostro lettore.
In questo file è possibile selezionare quali delle mail è da inviare oppure no. una colonna con Y o N vi consente di tenere il database di tutte le mail che volete spedire ma di scegliere di volta in volta quali volete spedire e quali no
Andrea Terzaghi
Ultimi post di Andrea Terzaghi (vedi tutti)
- Refresh in the Website! - 28 Settembre 2017
- Word Cloud - 19 Ottobre 2016
- Extract data from an image or a PDF - 7 Luglio 2016
- Divertissement mathématique - 12 Maggio 2016
- IRPEF, Tasse, Sconti progressivi e sconti regressivi - 25 Aprile 2016
Buongiorno,
Sto provando ad utiizzare questa macro e la trovo davvero utile.
Mi piacerebbe sapere se esiste anche una funzionalità per schedulare un’invio mail (ad esempio quotidiano) in modo da automatizzare ulteriormente il processo.
Nel mio caso ho installato Excellent Analytics, quello strumento che permette di interfacciare Excel con Google Analytics per l’estrazione dei dati.
Se riuscissi ad automatizzare entrambe le fasi di estrazione ed invio mail, il gioco sarebbe fatto per la creazione di un report totalmente autonomo ed aggiornato.
Grazie mille,
Sebastiano
Salve. Esiste la possibilità di programmare degli eventi su windows a una certa ora. È un’inpostazione di pannello di controllo. Si imposta l’esecuzione di un file excel e il file excel ha una macro in apertura che esegue direttamente il task necessario, carica dati e spedisce mails e eventualmente si salva e si chiude da solo.
Buongiorno,
sto provando ad usare il tool ma una volta che clicco il tasto per l’invio delle mail, esce l’errore di runtime 9 ” indice non inclusi nell’intervallo”…cosa sbaglio ?
a me interessa poter inviare una tabella excel fatta nel “foglio 1 ” a dei determinati indirizzi email.
grazie in anticipo.
Giovanni
Salve, ho trovato la soluzione. – grazie lo stesso!
sarebbe possibile riportare il testo presente nei vari fogli direttamente nel corpo dell’email senza utilizzare gli allegati ? in questo modo la persona che riceve l’email potrebbe avere il contenuto senza dover aprire gli allegati che a volte risoltano scomodi se I dati inviati non sono dei veri e propri report ma delle semplici informazioni contenute in poche righe.
grazie, cordiali saluti
Giovanni
Salve!
Certo basta usare il comando “.body ” all’interno della macro per scrivere il testo della mail. È un po’ laborioso ma una volta impostato il primo testo il tutto poi dovrebbe essere automatico
Salve Andrea,
grazie per la risposta,ma purtroppo non ho idea come usare tale commando( ci ho provato….) Se non le chiedo troppo, mi potrebbe mandare il file aggiornato con tale funzionalità ? grazie , buona giornata.
Giovanni
Gentile Andrea, desidero inanzitutto ringraziarla per questo utilissimo tool. Sarebbe possibile ed in che modo poter scegliere di volta in volta quale Report inviare senza che alla pressione del “Crea Emails” vengano preparati tutti i report selezionati?
Ad esempio, nel mio caso, l’excel contiene N report che ho esigenza di inviare in giorni diversi. In questo momento vengono tutti preparati ogni volta che si sciaccia il tasto di “Crea Emails”. Magari replicando il tasto “Crea Emails” su ogni lista di distribuzione potrebbe essere una soluzione in modo da far compilare al tool solo il report che si vuole inviare in quel momento.
Salve, ho lo stesso problema e la soluzione è alquanto semplice, bisogna solo aggiungere una colonna per poter selezionare i fike. Cercherò di migliorare il tool in un prossimo futuro. Saluti
Grazie! Resto in attesa!!
Salve, abbiamo aggiunto un file con la funzionalità richiesta, spero le sia utile!
Cordiali saluti
Grazie infinite! Adesso è perfetto!! Complimenti!!
Macro molto utile. Io ho un problema un pò diverso. Lavoro con delle cartelle excel, ognuna delle quali è il nome di un paziente; in ogni cartella il foglio 5 è il certificato medico. Ho necessità di inviare al paziente solo il foglio 5, in formato pdf: è possibile?. Nel corpo della mail dovrebbe esserci un testo standard, ad esempio “Le invio il certificato allegato”; se possibile, l’indirizzo mail dovrebbe essere captato in automatico (è inserito nella casella A3 del foglio 5). La ringrazio.
Ciao, ho trovato questo tool molto utile, ti chiedo se è possibile utilizzarlo per inviare dei template word, quindi invece di prendere i dati da uno sheet fare in modo che prenda un documento di word trasformandolo in pdf.
grazie
Si e’ possibile
Bisogna creare una macro in VBA di Word invece che in VBA di Excel e gestire come oggetti i documenti word invece che i fogli excel.
La macro esprime tutta la sua potenza nel poter distribuire fogli diversi a utenti diversi potendo quindi customizzare la reportistica.
Cosa si vuole fare con Word? solo stampare il file in PDF e inviarlo invece che mandare un file direttamente come word?
come posso aggiungere fogli?
Aggiungi il foglio come in un normale file excel e poi semplicemente sul foglio di lavoro che elenca i fogli con le x, aggiungi il nome del nuovo foglio, oppure lancia la macro premendo il bottone apposito
Buon giorno, non riesco a far funzionare il file. Mi restituisce un messaggio “errore di run time 429: il componente ActiveX non può creare l’oggetto”.
Premetto che non ho dimestichezza con Macro e VBA.
Questo file promette proprio ciò di cui avrei estremo bisogno sarebbe una vera svolta.
Ho installato office 2007
Grazie in anticipo per la cortese risposta è per il lavoro svolto
Salve. e’ molto strano il comportamento. mi manda il file che ha sul suo PC che provo a vedere cosa succede?
andrea[punto]terzaghi[chiocciola]gmail.com
Li aggiunga semplicemente e poi troverà una macro per inserirli nella tabella che indica quali fogli inviare a chi. Metta a quel punto le ‘x’ dove ritiene più opportuno e il gioco è fatto
Grazie infinite per questo lavoro; cercavo da tempo un tool così! spiegazioni chiarissime anche per chi non conosce VBA
Buongiorno,
innanzitutto grazie per questo tool… utilissimo.
A me servirebbe che il file generato conservasse anche la “DistributionTable”.
SI può fare?
Grazie.
Si basta aggiungere la “x” sulla colonna “Distribution table”
Cordiali saluti
Buongiorno Andrea,
trovo il tuo file utilissimo, grazie!
Riprendendo il primo commento che hai ricevuto da Sebissimo89, ti espongo la mia necessità correlata a questo file.
Mi piacerebbe che:
1) si aprisse in automatico il file ogni settimana ad un determinato orario, e questo, come hai suggerito, è possibile tramite la funzionalità che si trova all’interno del pannello di controllo –> ok, ci sono riuscito
2) si eseguisse in automatico la macro una volta che windows apre in automatico il file –> già qui mi perdo perchè non so come impostare il codice in visual basic affinché si avvii la macro;
3) si chiudesse in automatico il file excel (altrimenti presumo che rimarrebbe aperto nel pc dove viene eseguito il comando).
Grazie mille
Marco
Salve.
grazie per il commento
abbiamo creato due semplici tutorial che dovrebbero spiegarle il tutto: http://www.office-guru.com/wordpress/2017/10/eseguire-macro-allapertura-del-foglio-excel/
cordiali saluti
Grazie Andrea, sei formidabile!!
Un ultimissimo quesito: secondo te è possibile far “partire” la mail da outlook senza dover entrare nel programma di posta e cliccare su “invia” nella bozza predisposta dal codice VBA di excel?
Grazie ancora
Buona giornata
Leggendo meglio il codice, ho visto che avevi già previsto questa possibilità, quindi sono riuscito a settare l’invio istantaneo. Grazie ancora!
Certo basta mettere nella macro che gestisce la comunicazione con outlook il comando «.send» invece che «.display» poi attento, ogni volta che lanci la macro ti parte una mail e attento al fatto che outlook ha un sistema di protezione per non essere usato come sistema.per generare mail di spam. Verifica se un programma esterno gli chiede di creare troppe mail troppo velocemente e nel caso blocca il programma e non gli lascia inviare mail. Il limite è qualcosa intorno a piu di una mail al secondo. Quindi se la tua macro lancia troppe email troppo velocemente dovresti rallentarlo..
Sono sempre io…ho un’ulteriore problema (spero che questa volta sia l’ultimo!) che riguarda l’origine esterna di alcuni dati dentro il file excel in questione.
Quando apro il file, excel mi dice che “La cartella di lavoro contiene uno o più collegamenti che non possono essere aggiornati”. Ho due opzioni: “Continua” oppure “Modifica collegamenti”, pertanto provvedo a verificare se i collegamenti abbiano qualche errore, ed invece risultano perfettamente regolari (status “OK”).
Purtroppo questo “intoppo” mi impedisce l’esecuzione automatica di tutto il processo di invio mail.
Allora ho preso il file di origine (i cui fogli sono stati peraltro copiati pari-pari nel file excel con la macro), ed il problema non sussiste: nel momento in cui copio questi fogli nella macro, excel mi chiede di verificare i collegamenti.
Poichè nel file ho molti collegamenti esterni 6 file esterni, e pensando che fosse causato dai troppi collegamenti, ho provato a scaricare il “Dispatcher 3” da questo sito e nel “foglio 1” ho inserito un collegamento ad una cella di un altro file excel presente sul desktop: mi ritorna lo stesso avviso (“Continua” oppure “Modifica collegamenti”).
Ho dedotto quindi che non fosse colpa del mio file di origine, ma di un qualcosa legato alla macro.
Le ho provate tutte per togliere questo avviso:
– ho deselezionato l’opzione “Richiedi collegamenti automatici” in impostazioni avanzate;
– ho impostato il percorso dove si trova il file di origine come “attendibile” nel centro di protezione;
– ho selezionato l’opzione “Attiva tutte le connessioni dati” in contenuto esterno del centro di protezione;
– ho selezionato l’opzione “Attiva aggiornamento automatico dei collegamenti della cartella di lavoro” in contenuto esterno del centro di protezione;
…nulla da fare!
Grazie Andrea!
Il modo piu semplice è aprire prima i 6 file e poi il file contenente la macro che puo chiudere poi tutti e 7. Verifico se c’è I’moption per disabilitare il controllo dei link esterni
Queste procedure non funzionano? https://www.extendoffice.com/documents/excel/2099-excel-disable-update-links-prompt.html#a2
Anche aprendo prima i file, e poi quello contenente la macro, persiste l’avviso.
Pure le procedure di extendoffice.com le ho già provate tutte…
Buongiorno,
non riesco a trovare il file tool da scaricare.
Buongiorno,
deve cliccare su “Dispatcher”, le metto qui per comodità il link:
http://www.office-guru.com/wordpress/wp-content/uploads/2013/10/Dispatcher3.xlsm
cordiali saluti
Andrea Terzaghi
Dove è possibile scaricare ? Non sono riuscito a trovare nella pagina il link per il download. Grazie
Salve. Ci sono piu links a ‘Dispatcher’ in fondo all’articolo
Buongiorno
complimenti, la macro è utilissima!
Sarebbe possibile nel momento in cui il file inviato via email viene salvato con la data, inserire nel nome file anche un progressivo che differenzi i files inviati lo stesso giorno?
Inoltre, sarebbe possibile definire il titolo dell’allegato con lo stesso wording di una cella del report da inviare?
Grazie mille
certo basta utilizzare delle formule che creano il testo “dinamicamente” come spiegato per esempio qui: https://support.office.com/it-it/article/combinare-testo-e-numeri-a32c8e0e-90a2-435b-8635-5dd2209044ad
saluti
Andrea
Buonasera Andrea
mi sono imbattuto in questa pagina cercando un automatismo per i miei fogli excel di tenuta contabilità Club. Ogni foglio corrisponde ad un report da inviare in PDF ad una lista contatti creato su ultimo foglio cartella. Per l’invio userei Gmail e non Outook che non ho installato su PC e preferibilmente lavorerei in LibreOffice.
Il file “dispatcher” è modificabile a questo scopo?
grazie mille
Buongiorno,
mi spiace ma l’integrazione con outlook è “nativa” in Office emntre non c’e’ un sistema per accedere alla webmail di Google in modo semplice.
Le consoiglio di:
1. installare Outlook
2. Configurare gmail su Outlook (attenzione deve rimuovere un flag di sicureezza di Google per poterlo usare)
3. usare la mia macro per automatizzare da Excel a Outlook e quindi inviare le mails con Gmail Google, come del resto faccio io..
cordiali saluti
Andrea
Buongiorno,
ho scaricato il suo file che trovo veramente utile e facile da utilizzare.
Volevo chierderLe se è possibile modificare il codice per poter inviare una sola email con tutti i fogli selezionati come singoli allegati, è una funzione che mi aiutarebbe tantissimo.
In attesa di un suo riscontro e ringraziandoLa ancora porgo cordiali saluti.
Buongiorno, semplicemente selezioni con la x tutti i fogli che vuole inviare.. può mettere tutte le “x” che vuole.
coridali saluti
Andrea
Ho provato a seguire le istruzioni dettagliate da lei fornite, almeno credo, vista la mia ignoranza in campo VBA.
Quando clicco sul tasto grigio mi si presenta l’immagine del mio report (foglio) con il contorno lampeggiante ma poi il si blocca e mi si dice che excel non risponde. Il debug mi evidenzia in giallo nel codice la seguente indicazione:
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Sinceramente il suo file sarebbe per me molto utile e funzionale ma i miei limiti non mi mettono nella condizione di utilizzarlo senza un suo possibile aiuto.
Buonasera,
Grazie per il suo messaggio
è molto strano, l’istruzione che evidenza è una istrzione banale che “incolla” le informazioni su celle excel (è di fatto un CTRL-V)
ha provato a usare il file con un file più “semplice” per vericficare se il file che lei sta usando non è “troppo complesso”?
In più il “CTRL-V” funzioan bene quando si usano “range” compatti e non “sparpagliati”. Credo sia questo il problema.
Cordiali Saluti