Condividi:        

Macro excel per mandare Mail

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Macro excel per mandare Mail

Postdi GIO78512 » 20/09/12 15:30

Mi sembra di aver visto che ci sono diversi metodi per mandare e-mail da excel attraverso una macro, tutti spesso correlati ad una specifica esigenza. Vi mostro la mia esigenza, nella speranza che qualcuno mi sappia indirizzare sulla retta via per la definizione del codice giusto.
Nella Colonna A ho un elenco di nomi, in quella B le relative e-mail, in C la data di attivazione di un contratto, in D l'elenco dei chilometri effettuati da quella persona.
Ogni 3 anni c'è una scadenza (bollo 1° anno, bollo 2° anno, bollo 3° anno), e agli intervalli di chilometraggio 1000,5000,7500, 10000, 15000,20000,22500,25000,30000 scadono i tagliandi (1° tag, 2° tag ......., 9° tag).
Volevamo generare una macro che quando arriva la scadenza del bollo o del chilometraggio faccia partire la mail all'utente relativo, e in copia un indirizzo fisso (prova@gmail.it) con nel corpo della mail il dettaglio della scadenza.
Ovviamente la mail deve partire una volta sola, o quando si verifica la circostanza (ad esempio inserendo un chilometraggio), o in automatci all'apertura del foglio (per le scedenze del bollo).
nella speranza di trovare la maniera di affrontare la composizione del codice, spero di essere stato sufficiente chiaro.

Giovanni
GIO78512
Utente Junior
 
Post: 12
Iscritto il: 20/09/12 15:08

Sponsor
 

Re: Macro excel per mandare Mail

Postdi Flash30005 » 20/09/12 16:03

E' sicuramente possibile
ma chi ha prevalenza il bollo o i km?
poi, una volta inviata l'email occorrerà taggarla per evitare un successivo invio (nessun problema)
occorrerebbe anche un file esempio con 3 o 4 righe (fittizie) e qualche indicazione in più rispetto alla domanda precedente

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Macro excel per mandare Mail

Postdi GIO78512 » 21/09/12 11:08

Grazie mille,
direi che bollo e km hanno la stessa priorità, ma se devo scegliere farei prima il check con il bollo.
di seguito due immagini di come pensavo fare il file, uno con i dati di base che servono, l'altro con anche il dettaglio del bollo e chilometraggio, che però non so se devono per forza essere visualizzati.
Immagine
Immagine
Giovanni
GIO78512
Utente Junior
 
Post: 12
Iscritto il: 20/09/12 15:08

Re: Macro excel per mandare Mail

Postdi Flash30005 » 21/09/12 14:28

:roll:

C'è qualcosa che mi sfugge
posso capire che effettuato il bollo il 10/09/2011 (quindi con l'auto in officina) l'incaricato possa digitare in colonna C la prossima scadenza (10/09/2012) e all'apertura del file venga inviata l'email se la data è prossima o superata.

Ma non capisco come possa sapere l'incaricato quanti Km ha fatto quell'auto se non è mai venuta in officina durante l'anno
Inoltre vedo che per i Km è dedicata una sola colonna quindi suppongo che venga sovrascritta dall'incaricato quando visiona l'auto.

Insomma occorrono altri ragguagli oltre che a indicare quale programma di posta usi (Outlook di Office)?

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Macro excel per mandare Mail

Postdi GIO78512 » 21/09/12 16:39

Già Hai ragione...

nella colonna C ho messo la data di immatricolazione del veicolo, così attraverso un confronto con la data odierna (ovvero di apertura del foglio) è possibile far sì che quando è raggiunto un anno parta la mail che avvisa la scadenza del bollo 1°anno, se invece sono trascorsi 2 anni faccia partire la mail del secondo anno e così via.... (così facendo l'incaricato segna solo la data di immatricolazione del veicolo, e poi la macro opera in automatico).

per i km invece avevo pensato di usare la colonna D come colonna di inserimento dell'utente, che apre il foglio chiama il cliente e digita manuale il chilometraggio effettivo, se il chilometraggio ha raggiunto una delle scadenze indicate allora parte la mail, il dato ovviamente viene riscritto ogni volta che l'utente chiama il cliente.

Forse così è più chiaro.
Thanks
Giovanni
GIO78512
Utente Junior
 
Post: 12
Iscritto il: 20/09/12 15:08

Re: Macro excel per mandare Mail

Postdi Flash30005 » 22/09/12 03:20

Per il primo quesito (scadenza bollo anno) sarei anche d'accordo, bisognerebbe ogni volta segnare da qualche parte che ha effettuato bollo 1°anno, 2°anno...
perché ciò non è ricavabile dalla sola data di immatricolazione
in ogni caso, qualcosa si potrebbe fare...

ma continuo a non capire...
GIO78512 ha scritto:per i km invece avevo pensato di usare la colonna D come colonna di inserimento dell'utente, che apre il foglio chiama il cliente e digita manuale il chilometraggio effettivo, se il chilometraggio ha raggiunto una delle scadenze indicate allora parte la mail, il dato ovviamente viene riscritto ogni volta che l'utente chiama il cliente.


Ma se l'utente chiama il cliente (in base a cosa?) e si fa dire i Km attuali
non può dirgli direttamente al telefono che occorre fare un controllo sapendo a memoria la tabella kilometrica?
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Macro excel per mandare Mail

Postdi GIO78512 » 24/09/12 13:05

l'idea era quella che l'utente apre ogni mese il foglio e chiama i clienti per verificare i chilometraggi.
però effettivamente potrebbe mandare in automatico una mail che avvisa quanti km mancano alla scadenza del tagliando, fino a che l'utente non segna da qualche parte che l'utente ha effettuato il tagliando.

forse così è meglio...
GIO78512
Utente Junior
 
Post: 12
Iscritto il: 20/09/12 15:08

Re: Macro excel per mandare Mail

Postdi GIO78512 » 01/10/12 12:53

Se per caso tolgo la parte chilometri semplifichiamo il tutto?
così posso cominciare a provare.

Giovanni
GIO78512
Utente Junior
 
Post: 12
Iscritto il: 20/09/12 15:08

Re: Macro excel per mandare Mail

Postdi Flash30005 » 01/10/12 14:06

Se vuoi provare ok
ma sappi che a parte la data di immatricolazione va registrata, in ogni caso, la data del bollo e dei tagliandi
avvengono o devono avvenire ogni anno?

invia il file test come da te compilato per la tua gestine e proverò/remo a realizzare qualcosa

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Macro excel per mandare Mail

Postdi GIO78512 » 05/10/12 09:32

ho9 provato a mettere giù così il file,
http://uploading.com/files/get/322542e1/test-macro-mail.xlsm
per ora ho messo una formattazione conidzionale, ma l'idea è quella di avere la macro che manda l'e-mail.
la data del bollo (i tagliandi ormai non li gestirei più) deve essere annuale, ovvero ad ogni anno deve partire (1) mail che avvisa che c'è il bollo da pagare.

spero di non aver impostato male il tutto.
Giovanni
GIO78512
Utente Junior
 
Post: 12
Iscritto il: 20/09/12 15:08

Re: Macro excel per mandare Mail

Postdi Lele2774 » 05/10/12 22:56

scusate, ma avete già creato questa macro?
grazie mille
Lele2774
Utente Junior
 
Post: 54
Iscritto il: 05/10/12 14:55

Re: Macro excel per mandare Mail

Postdi Flash30005 » 06/10/12 10:43

Quale programma di posta utilizza Gio78512 ?
Con outlook di office ci sono meno problemi di invio ma non potrò testare l'eventuale macro

inoltre dovrò modificare lo schema dati per poter fleggare ad ogni invio di email.

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Macro excel per mandare Mail

Postdi Anthony47 » 06/10/12 15:11

Premettiamo1 che per l' invio automatico delle email bisogna usare un applicativo di posta che supporti l' automazione Vba, ad esempio Outlook (la versione inclusa in Office, ma anche aquistabile separatamente).
Premettiamo2 che secondo me excel e il vba hanno il compito di aiutare l' utente, non di sostituirsi a loro; quindi un file che invia di propria iniziativa delle mail io non lo vorrei suggerire.

Cio' detto, se disponi di Outlook il mio suggerimento e' di creare in un foglio un elenco contenente i dati cruciali dell' evento da gestire
-Nominativo
-Indirizzo email
-Oggetto email
-Campo1 email (es targa)
-Campo2 email (es data)
Vedi esempio:
Immagine

A questo punto in colonna H ti crei l' oggetto della mail (riga1) e il testo del messaggio che vuoi inviare a ognuno di questi destinatari, con formule standard intercalate dai dati che hai elencato nella tabella precedente.
Ad esempio, dall' elenco precedente:

Immagine

Questo risultato e' ottenuto inserendo in G1 il numero di riga da cui attingere i dati personalizzati e poi usando queste formule arbitrarie ad uso dimostrazione:

Immagine

Userai nel tuo foglio le formule in grado di generare il messaggio che ti interessa, partendo dal presupposto che il numero riga da cui prelevare i dati specializzati e' presente in cella G1.
Puoi usare max 100 righe per generare il testo personalizzato; la riga1 sara' il "Subject" della mail, da riga2 in avanti sara' il "Corpo" della mail. Le righe vuote rimangono vuote anche nella mail

Ti anticipo che la macro di invio (vedi oltre) compilera' la cella G1, in sequenza per ogni destinatario.
Poi potrai usare e personalizzare una delle tante macro per invio mail tramite Outlook; io sono partito da questa versione viewtopic.php?f=26&t=83835&start=20#p479791 specializzandola per la struttura dati che ti ho descritto, ottenendo questa versione che invia le singole email:
Codice: Seleziona tutto
Sub Invioemail()
Dim OutApp As Object
Dim OutMail As Object
Dim EmailAddr As String
Dim Subj As String
Dim BodyText As String
Const LF = vbCrLf
'  (a)
Set OutApp = CreateObject("Outlook.Application")
''compilazione del testo di accompagnamento
For I = 2 To Range("H100").End(xlUp).Row
    BDT = BDT & Cells(I, "H").Value & LF
Next I

''  (b)
Nominat = Cells(Range("G1").Value, "A").Value
'OutFile = "C:\ESITI\" & Nominat & "_ScrSh.jpg"
EmailAddr = Cells(Range("G1").Value, "B").Value
Subj = Range("H1").Value
'
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = EmailAddr
.CC = "pippo@emailadd.com"     '<<< Destinatario fisso in c.c.
.BCC = ""
.Subject = Subj
'.Attachments.Add OutFile    '***
.Body = BDT
.Display 'or use .send
'.send
End With

'  (c)
Set OutMail = Nothing
'
'  (d)
Set OutApp = Nothing

    Application.Wait (Now + TimeValue("0:00:02"))
    Application.SendKeys "%a"
    Application.Wait (Now + TimeValue("0:00:04"))
'

End Sub

La riga marcata <<< e' da specializzare.

Per inviare le mail a tutti gli utenti elencati nel foglio attivo che rispecchino la struttura descritta prima inserirai questa seconda macro:
Codice: Seleziona tutto
Sub InviaAll()
For I = 2 To Cells(Rows.Count, "A").End(xlUp).Row
    Range("G1") = I
    Call Invioemail
Next I
End Sub

La macro da mandare in esecuzione e' questa seconda, sara' lei che richiama Invioemail.

Nota che la macro lavora sul foglio attivo; quindi potresti creare diversi fogli che abbiano strutture e formule diverse per gestire i tuoi diversi bisogni, e processarli poi con la stessa macro; il vincolo al momento e' la cella G1 usata dalla InviaAll per specificare quale riga e' in gestione e la colonna H dove Invioemail accede per ottenere Subject e Corpo della mail, ma l' adattamento e' abbastanza semplice.
La Sub Invioemail contiene la riga '.Attachments.Add OutFile '***; eliminando l'apostrofo iniziale e compilando OutFile si puo' indicare quale allegato va inviato; esempio:
Codice: Seleziona tutto
'.Attachments.Add "C:\Directory\NomeFile.pdf"      '***

Se non disponi di Outlook allora si puo' ancora fare qualcosa, ma con maggiore intervento dell' utente e (mi pare) con poca possibilita' di modificare il testo.

Vedi se quanto proposto ha una applicabilita' alla tua situazione

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro excel per mandare Mail

Postdi Anthony47 » 09/10/12 02:01

Mi accorgo che le immagini 2 e 3 sono disallineate con il testo del messaggio.
Infatti in H1deve esserci il "Subject" della mail, che puo' essere un testo fisso oppure ottenuto concatenando con formula testo fisso e Info prelevate dall' elenco della prima immagine.
Bisogna quindi traslare di una riga verso il basso le formule date in esempio (fig 3) e il relativo testo (fig 2).

Chiedo scusa...
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro excel per mandare Mail

Postdi GIO78512 » 09/10/12 13:28

ok, ti ringrazio molto, ora provo ad applicare il tutto e ti faccio sapere!

Giovanni
GIO78512
Utente Junior
 
Post: 12
Iscritto il: 20/09/12 15:08

Re: Macro excel per mandare Mail

Postdi GIO78512 » 10/10/12 16:47

Ti ringrazio Anthony47,
sto impostando il foglio e relativo Macro, mi sovviene un dubbio:
ma per la scadenza del bollo del secondo anno il sistema la legge?
nel frattempo ultimo l'impostazione secondo il tuo codice e ti faccio sapere.
P.S. Sto usando Microsoft Outlook quindi nn ci dovrebbero essere problemi di incompatibilità con il codice fornito.

Grazie e a presto.
Giovanni
GIO78512
Utente Junior
 
Post: 12
Iscritto il: 20/09/12 15:08

Re: Macro excel per mandare Mail

Postdi GIO78512 » 10/10/12 17:14

Fatto il test.
la macro funziona, però ho i seguenti dubbi:
- la macro parte su richiesta, e non a condizione che siamo nel mese di scadenza.
- per l'anno successivo deve impostare un'altro macro similare con un'altra colonna di data dedicata?
- il destinatario e l'oggetto della mail devo personalizzarlo io dal codice

Giovanni
GIO78512
Utente Junior
 
Post: 12
Iscritto il: 20/09/12 15:08

Re: Macro excel per mandare Mail

Postdi Anthony47 » 11/10/12 01:25

GIO78512 ha scritto: la macro parte su richiesta, e non a condizione che siamo nel mese di scadenza.
Esatto, come ti avevo anticipato:
Anthony ha scritto:quindi un file che invia di propria iniziativa delle mail io non lo vorrei suggerire.
Quindi sei tu che decidi se e quando le mail vanno spedite, dopo aver controllato che i dati che la macro elabora sono corretti.

- per l'anno successivo deve impostare un'altro macro similare con un'altra colonna di data dedicata?
- il destinatario e l'oggetto della mail devo personalizzarlo io dal codice

La macro ruota attorno a una tabella del tipo riportata qui: viewtopic.php?f=26&t=96972&p=557817#p557450 (prima immagine).
Nella tabella sono (anzi: devono essere) riportati gli indirizzi dei destinatari, nonche' altre informazioni sulla cui base generi (da H1 verso il basso) l' oggetto della mail e il testo parametrizzato della mail.
Quindi quando hai delle scadenze tipo Bollo devi compilare la tabella, controllarla, e quando sei sicuro premi il tasto che invia l' email a tutti gli elencati; l' indirizzo email (destinatario) e' prelevato da col B della tabella, l' oggetto della mail viene prelavato da H1, dove qualcuno (tu) l' ha scritto o sotto forma di stringa fissa oppure con una formula che concatena testi fissi e informazioni prelevate dalla stessa tabella.
Il destinatario in copia e' "cablato nella macro"; e' l' istruzione a cui facevo riferimento nella frase "La riga marcata <<< e' da specializzare."

Ora immagino che la tua prossima domanda possa essere: "Mi date una mano a compilare automaticamente la tabella di cui scrive Anthony?"
La mia risposta per il momento e': nella tua tabella (vedi il file pubblicato qui viewtopic.php?f=26&t=96972&p=557817#p557360) dove si trova o da cosa si calcola la "prossima scadenza" del bollo?

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro excel per mandare Mail

Postdi GIO78512 » 11/10/12 12:34

Ti ringrazio Anthony, per l'automazione non intendevo di fare un invio completamente automatico. intendevo almeno far si che chiamo l'invio e mi compila solo le email che sono necessarie per avvisare della scadenza del bollo nel mese successivo (cioè se apro oggi il folgio e chiamo la macro mi compila le email dei clienti il cui bollo scade nel prossimo mese).
con qualche formula a monte della macro sono riuscito a ottenere che se non scade il bollo nel mese non mi mette la scadenza.

In pratica (avendo limitato la macro a inviare le mail solo in funzione della scadenza bollo) carico il cliente indicando mail di contatto e data di immatricolazione. Sulla base della data di immatricolazione mi compila tre colonne dove ottengono le tre date di scadenza (fino a 3 anni che è quello che mi serviva). Poi dove abbiamo inserito i testi per compilare le mail ho aggiunto due righe e fatto sì che in funzione del mese in cui siamo mi compila solo la riga della scadenza necessaria oppure non mi compila nessuna riga. così facendo nella mail apparirà o una delle tre righe o niente se non siamo vicini a nessuna scadenza.
Spero di aver spiegato bene...

Per il resto funziona egregiamente, ti ringrazio tanto perchè ho imparato ad usare (spero propriamente :roll: ) dei comandi che non conoscevo.
Sperando che per quando avrò ultimato i test non trovi problemi inghippi vari.

Giovanni
GIO78512
Utente Junior
 
Post: 12
Iscritto il: 20/09/12 15:08

Re: Macro excel per mandare Mail

Postdi Anthony47 » 11/10/12 14:48

Spero di aver spiegato bene...
Ehmmm, sinceramente non ho capito se cosi' hai risolto o cosi' chiedi aiuto :D

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Macro excel per mandare Mail":


Chi c’è in linea

Visitano il forum: Nessuno e 63 ospiti