Condividi:        

Macro per invio automatico di mail, per avviso scadenziario

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 per invio automatico di mail, per avviso scadenziario

Postdi Leone1982 » 16/04/15 08:55

Buongiorno a tutti

Ho visto che per l'invio di mail sono stati fatti un sacco di post per quanto riguarda la creazione di macro, ma come detto di molti in questo forum, non calzano per le mie richieste e le mie conoscenze per modificare tali funzioni è pari 0...

Provo a spiegarvi:

- In un file excel ho un foglio dove è presente una colonna, la K, dove sono indicate le date entro cui devo inviare la richiesta di visita.
- E' possibile avere una macro (e qui mi scuso per l'ignoranza sul programma) che lavora in remoto e confronta la data delle verie celle con la data del giorno e se riscontra che è uguale invia una mail ad un indirizzo (il mio). La data attuale si può mettere nella colonna a fianco.
- Nella mail mi basta che ci sia scritto il nome della persona in scadenza (i nomi sono nella colonna B) e la dicitura "SCADE VISITA" e basta.

Spero di aver dato le informazioni necessarie. Altrimenti chiedete pure.

Grazie mille per tutto l'aiuto possibile.

Enrico
Leone1982
Newbie
 
Post: 5
Iscritto il: 16/04/15 08:27

Sponsor
 

Re: Macro per invio automatico di mail, per avviso scadenzia

Postdi Anthony47 » 16/04/15 14:50

Ciao Leone1982, benvenuto nel forum.
Che cosa intendi con "macro che lavora in remoto"?
E poi, confermi che ti serve una sola mail con tutte le scadenze PARI alla data odierna?
Infine, tu usi Outlook (che versione) come programma per la gestione di mail?

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

Re: Macro per invio automatico di mail, per avviso scadenzia

Postdi Leone1982 » 16/04/15 15:47

Ciao Anthony47

Grazie per il benvenuto!

Andiamo con ordine:

1) Io per remoto, intendo che non devo aprire il file e far partire la macro, ma che anche avendocelo chiuso al momento dello scoccare della data in cui scade la visita mi avverta;

2) A me serve una sola mail, con all'interno il nome e cognome (che sono dentro una casella del foglio) di chi è scaduto. Se ci sono più di una persona che scade lo stesso giorno, basterà una mail sola.

3) Uso outlook, versione del 2010.

Se ti servono altri dati, non hai che da chiedere!!

Enrico
Leone1982
Newbie
 
Post: 5
Iscritto il: 16/04/15 08:27

Re: Macro per invio automatico di mail, per avviso scadenzia

Postdi Anthony47 » 16/04/15 21:43

Poiche' una macro di Excel possa eseguirsi il file va aperto, quindi l' ipotesi del foglio silente io la ignorero' (tu puoi ricorrere ad altri script per aprire il file alle 00:00 di ogni giorno e richiuderlo dopo 5 minuti, ma queste sono utility di sistema e non di Office; per dire che non le conosco).
Cio' detto, ti potrebbe aiutare questa macro:
Codice: Seleziona tutto
Sub Invioemail()
'Vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=104487
Dim OutApp As Object, OutMail As Object
Dim EmailAddr As String, Subj As String
Dim BDT As String, I As Long, myCnt As Long                      'FIN QUI SONO "DICHIARAZIONI"
'  (a)
Sheets("Foglio2").Select                                '<<< Il tuo Foglio con i nominativi e le date
'compilazione del testo della mail
BDT = "Elenco dei nominativi in scadenza al " & Format(Date, "yyyy-mmm-dd") & vbCrLf
For I = 2 To Cells(Rows.Count, "K").End(xlUp).Row
    If IsDate(Cells(I, "K").Value) Then
        If Cells(I, "K") = Date Then
            BDT = BDT & Cells(I, "B") & vbCrLf
            myCnt = myCnt + 1
        End If
    End If
Next I
BDT = BDT & vbCrLf & "Cordiali saluti" & vbCrLf
BDT = BDT & "La tua macro"
''  (b)
If myCnt = 0 Then Exit Sub                              'Nessuna scadenza, si termina senza azioni
'
'DA QUI SI CREA E INVIA LA MAIL:
Set OutApp = CreateObject("Outlook.Application")
EmailAddr = "TuaEmail@Dominio.Com"                      '<<< INDIRIZZO EMAIL
Subj = "Scadenze del " & Format(Date, "yyyy-mmm-dd")    ' OGGETTO DELLA MAIL
Set OutMail = OutApp.CreateItem(0)
With OutMail
.to = EmailAddr
.CC = ""
.BCC = ""
.Subject = Subj
.Body = BDT
'.Display 'or use .send
.send
End With
'  (c)
Set OutMail = Nothing
'  (d)
Set OutApp = Nothing
'
    Application.Wait (Now + TimeValue("0:00:02"))
End Sub

Questa macro va inserita in un modulo standard del vba; da excel:
-Alt-F11 per aprire l' editor delle macro; Menu /Inserisci /Modulo; copia il codice e incollalo nel frame di dx.
Le istruzioni marcate <<< vanno personalizzate.

Se vuoi avviare la macro automaticamente all' apertura del file, allora inserisci nel modulo Questa-Cartella_diLavoro (visibile nel frame Progetto - VBAProject a sinistra) questo codice:
Codice: Seleziona tutto
Private Sub Workbook_Open()
Call Invioemail
End Sub

Se vuoi lanciare manualmente la macro:
-da Excel premi Alt-F8, seleziona Invioemail dall' elenco delle macro disponibili, premi Esegui.

Spero sia di qualche utilita'.

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

Re: Macro per invio automatico di mail, per avviso scadenzia

Postdi Leone1982 » 17/04/15 09:20

Ciao Anthony

Innanzitutto, grazie!!!!

La macro funziona.. Sono ignorante come una scarpa, ma seguendo le tue indicazioni ha funzionato!!

Ancora una domanda..

La stessa macro, posso applicarla (sempre nello stesso file) per un foglio diverso in cui sono sempre contenute delle date di scadenze visite (di tipo diverso però)?

Grazie mille!
Leone1982
Newbie
 
Post: 5
Iscritto il: 16/04/15 08:27

Re: Macro per invio automatico di mail, per avviso scadenzia

Postdi Anthony47 » 17/04/15 12:10

La macro al suo interno contiene la selezione del foglio che contiene dati e date:
Codice: Seleziona tutto
Sheets("Foglio2").Select                                '<<< Il tuo Foglio con i nominativi e le date

Puoi pero' eliminare quella riga dalla Sub Invioemail e creare altre due macro:
Codice: Seleziona tutto
Sub Macro1()
Sheets("PrimoFoglio").Select                                '<<< Il tuo Foglio con i nominativi e le date
Call Invioemail
End sub

Codice: Seleziona tutto
Sub Macro2()
Sheets("AltroFoglio").Select                                '<<< Il tuo Foglio con i nominativi e le date
Call Invioemail
End sub

Poi manderai in esecuzione Macro1 e/o Macro2.
Ovviamente se Nominativi e Date non sono rispettivamente su colonna B e K saranno necessarie altre modifiche.

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

Re: Macro per invio automatico di mail, per avviso scadenzia

Postdi Leone1982 » 24/04/15 11:58

ciao Anthony

Non ho ben capito il discorso delle 2 macro..

Io ho provato a fare direttamente una secondo macro, copiando tutto il testo della prima e modificando solamente il nome e il foglio dove va a prendere i dati. Può funzionare? oppure ho fatto una cavolata..

E poi ancora una cosa..

Visto che il pc potrebbe non accendersi per alcuni giorni di fila, si può fare il check sulla data in modo che controlli se la data di scadenza è anche minore della data attuale?

Enrico
Leone1982
Newbie
 
Post: 5
Iscritto il: 16/04/15 08:27

Re: Macro per invio automatico di mail, per avviso scadenzia

Postdi Anthony47 » 26/04/15 19:01

Non hai fatto una castroneria, solo una disottimizzazione; se invece le colonne con Nominativi e Date sono diverse tra i due fogli, allora quanto hai fatto e' la cosa piu' semplice.

Quanto alla richiesta di lavorare anche con data passata, ti e' chiaro che ogni scadenza per cui oggi invii una mail domani ricadrebbe nella situazione di "data gia' passata"? Dobbiamo quindi usare una cella per indicare che una mail di scadenza e' stata gia' inviata e impedire un secondo sollecito.
Supponiamo di usare la colonna Z (suggerisco di usare la prima libera nel tuo tracciato record), allora dovrai sostituire nella macro la riga
If Cells(I, "K") = Date Then
Con
Codice: Seleziona tutto
        If Cells(I, "K") = Date and Cells(I, "Z") = "" Then
            Cells(I, "Z").value = Date

Eventualmente modifica quel "Z" con la colonna usabile allo scopo.
Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Macro per invio automatico di mail, per avviso scadenziario":


Chi c’è in linea

Visitano il forum: Nessuno e 36 ospiti