Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Invio automatico Mail da Excel, senza uso di bottoni

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

Invio automatico Mail da Excel, senza uso di bottoni

Postdi alfroning » 31/07/20 16:59

Scusate sono capitato sulla discussione viewtopic.php?f=26&t=111467 con la ricerca, ho fatto una prova e funziona, ma volendo cambiare colonne e campi dove devo intervenire?
Da quello che ho capito con righe vuote non funziona, o esiste un comando per ignorarle.

Grazie per il vostro aiuto, sto appendendo le VBA ma nel frattempo devo fare un lavoro.

Edit:
Messaggio originariamente accodato ad altra discussione:
viewtopic.php?f=26&t=79363&start=20#p609124
Anthony
alfroning
Utente Junior
 
Post: 12
Iscritto il: 31/07/20 16:19

Sponsor
 

Re: Invio automatico Mail da Excel, senza uso di bottoni

Postdi Anthony47 » 31/07/20 22:24

Intanto "Benvenuto" nel forum.
Ti eri accodato a una vecchia discussione di oltre 5 anni fa e quindi l'ho "scodata" creandone una nuova tutta per te
La tua domanda puo' essere compresa solo leggendo i 22 messaggi di quella discussione; poiche' il tempo scarseggia ti chiederei di descrivere il layout dei tuoi dati (meglio se alleghi anche un file dimostrativo), che cosa vorresti ottenere e la conferma che la cosa che hai provato è la Private Sub Workbook_Open che aveva listato l'utente DiegoBeccari nella discussione da cui ti ho sganciato.

Ciao, ti aspettiamo con questi chiarimenti
Avatar utente
Anthony47
Moderatore
 
Post: 17044
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Invio automatico Mail da Excel, senza uso di bottoni

Postdi alfroning » 01/08/20 14:08

Ciao e grazie per il benvenuto, e ben trovato.

Mi aiuti per allegare il file di esempio, comunque lo riepilogo qui:

Il file che come detto posso variare nei contenuti o disposizione attualmente é cosi strutturato:
Colonna A: descrizione del contratto da stipulare
Colonna B: Data di decorrenza
Colonna C: Scadenza del termine
Colonna D: Preavviso per l'adempimento (calcola 10 giorni dalla scadenza)
Colonna E: Giorni mancanti al preavviso (da formula "OGGI")
Colonna F: Lo stato, ovvero quando Colonna E è inferiore a 10, rilava la "SCADENZA".

Ora vorrei che con riferimento alla scadenza o giorni residui venga inviata una mail, affinché si adempia nei termini.

La mail dovrebbe contenere la descrizione del contratto colonna A e la scadenza Colonna C, magari intestando la mail con "avviso di scadenza per contratto"


Grazie ancora.
alfroning
Utente Junior
 
Post: 12
Iscritto il: 31/07/20 16:19

Re: Invio automatico Mail da Excel, senza uso di bottoni

Postdi Anthony47 » 02/08/20 22:55

Il file potrebbe essere superfluo se e' chiaro il suo contenuto. Ora ho dei dubbi sulle colonne C:F
Colonna C: Scadenza del termine
Colonna D: Preavviso per l'adempimento (calcola 10 giorni dalla scadenza)
Colonna E: Giorni mancanti al preavviso (da formula "OGGI")
Colonna F: Lo stato, ovvero quando Colonna E è inferiore a 10, rilava la "SCADENZA".

Mi pare che in colonna C ci sia la data di scadenza; e' (a) giusto che che per tutte le righe l'anticipo con cui vuoi inviare email di promemoria e' lo stesso? O (b) vorresti che contratti diversi abbiano preavviso diverso? Nel caso a) allora basta il dato di colonna C; nel caso b) allora in una colonna (dimmi quale) devi indicare i giorni di preavviso desiderati.

E soprattutto: vuoi una unica mail inviata a te col riepilogo delle prossime scadenze; o vuoi tante email a destinatari diversi, una per ogni contratto?

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

Re: Invio automatico Mail da Excel, senza uso di bottoni

Postdi alfroning » 03/08/20 08:02

Buongiorno, ti allego il file, quello che sto cercando di realizzare é:

1) quando nella colonna F appare "in scadenza" venga inviata una mail di remainder a 3 soggetti fissi (del tipo "Contratto in scadenza con riferimento al nome (colonna a).
2) magari questo avvenga all'apertura del file
3) se possibile flaggare la colonna mail quando inviata.

Se riesco a capire come allegarlo, lo faccio volentieri, é strutturato come "tabella".

La struttura é cosi composta, ma non é rigida e quindi se necessario può essere adattata alla macro.
colonna A: Nome gara
colonna B: data aggiudicazione
colonna C: scadenza termine di legge
colonna D: alert
colonna E: giorni residui collegato alla cella "OGGI()
colonna F: stato (scaduto/ok)
colonna G: mail ok, per evitare doppio invio.

La macro dovrebbe leggere lo stato in colonna F (se scaduto) inviare una mail di sollecito, nel corpo "attenzione per stipula contratto X".

Ti ringrazio ma sono un po in difficoltà.
alfroning
Utente Junior
 
Post: 12
Iscritto il: 31/07/20 16:19

Re: Invio automatico Mail da Excel, senza uso di bottoni

Postdi alfroning » 03/08/20 08:17

Dimenticavo, il foglio di lavoro é denominao "tabella".



Ho impostato la spedizione:
Option Explicit

Sub Invia_Email_Automaticamente()
Dim OutApp As Object
Dim OutMail As Object

Application.ScreenUpdating = False
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = "xxxxxxxxxxx"
.Subject = "test"
.Body = "attenzione per stipula contratto....xxxxxxxx"

.Send
End With
Application.SendKeys "%a"
Set OutMail = Nothing
Set OutApp = Nothing
Application.ScreenUpdating = True
End Sub

Devo solo farla partire in automatico, ho inserito cliccando su "questa cartella":
Private Sub Workbook_Open()
Invio mail
End Sub
ma il debug mi da errore su invio mail
alfroning
Utente Junior
 
Post: 12
Iscritto il: 31/07/20 16:19

Re: Invio automatico Mail da Excel, senza uso di bottoni

Postdi alfroning » 03/08/20 10:33

Allora sono arrivato fino qui:
Mi servirebbe un aiuto per 2 aspetti:

1) nella mail non appare il nome della gara
2) il range finale con il debug va in errore
3) come impostare l'invio all'apertura del file.

Grazie
Option Explicit

Sub Invia_Email_Automaticamente()
Dim OutApp As Object
Dim OutMail As Object

Application.ScreenUpdating = False
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = "xxxxxxxxxxxxxxxx"
.Subject = "test"
.Body = "prova"
.Send
End With
Application.SendKeys "%a"
Set OutMail = Nothing
Set OutApp = Nothing
Application.ScreenUpdating = True
End Sub
Sub invio_mail()
Dim sh7 As Worksheet
Dim uR As Long
Dim i As Integer
Set sh7 = Sheets("tabella")
uR = sh7.Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To uR
If Range(i, "f") = "scaduto" Then

Invia_Email_Automaticamente
Cells(i, 7).Value = "x"
End If
Next i
End Sub
alfroning
Utente Junior
 
Post: 12
Iscritto il: 31/07/20 16:19

Re: Invio automatico Mail da Excel, senza uso di bottoni

Postdi alfroning » 03/08/20 11:08

Ho provato cosi:Option Explicit

Sub Invia_Email_Automaticamente()
Dim OutApp As Object
Dim OutMail As Object

Application.ScreenUpdating = False
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = "xxxxxxxxxx"
.Subject = "test"
.Body = "scadenza"
.Send
End With
Application.SendKeys "%a"
Set OutMail = Nothing
Set OutApp = Nothing
Application.ScreenUpdating = True
End Sub
Sub invio_mail()
Dim sh7 As Worksheet
Dim uR As Long
Dim i As Integer
Dim Var1 As String
Dim Var2 As String
Dim Var3 As String
Set sh7 = Sheets("tabella")
uR = sh7.Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To uR
Var1 = Format(Cells(i, 6), "scaduto")
Var2 = Format(Value, "scaduto")
Var3 = Cells(i, 7).Value
If Var2 >= Var1 And Var3 = vbNullString Then
Invia_Email_Automaticamente
Cells(i, 7).Value = "ok"
End If
Next i
End Sub

1) non sente "scaduto" e quindi invia una sola mail
2) non mette "ok" per le mail inviate
3) non riesco a far inserire il contratto nel body
4) mi rimane di impostare l'invio all'apertura del file in automatico.

Grazie per l'aiuto
alfroning
Utente Junior
 
Post: 12
Iscritto il: 31/07/20 16:19

Re: Invio automatico Mail da Excel, senza uso di bottoni

Postdi Anthony47 » 03/08/20 12:08

Allora...
Io segnerei in colonna G la data di invio della mail, e invierei una seconda mail solo dopo N giorni dal primo invio
Cio' detto, articolerei la macro come segue:
Codice: Seleziona tutto
Sub InvioEmailScad()
Dim OutApp As Object, OutMail As Object
Dim EmailAddr As String, Subj As String, Franc As Long
Dim BDT As String, I As Long, myCnt As Long                      'FIN QUI SONO "DICHIARAZIONI"
'  (a)
Franc = 10                                              '<<< Giorni tra una mail e la successiva
Sheets("Foglio1").Select                                '<<< Il Foglio con i i dati
'compilazione del testo della mail
BDT = "Attenzione per stiputa contratto " & vbCrLf      '<<<**
For I = 2 To Cells(Rows.Count, "F").End(xlUp).Row
    If UCase(Cells(I, "F")) = "SCADUTO" Then
        If (Date - Cells(I, "G")) > Franc Then
            BDT = BDT & "Gara: " & Cells(I, "A") & ", Scadenza al " & Format(Cells(I, "C"), "dd-mmm-yy") & vbCrLf     '<<<**
            myCnt = myCnt + 1
            Cells(I, "G") = Date
        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 = "PrimaEmail@Dominio.Com; SecondaEmail@Dominio.Com; TerzaEmail@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
    .send
'    .display        ' .send e .display sono alternative
End With
Application.Wait (Now + TimeValue("0:00:01"))
'  (c)
Set OutMail = Nothing
'  (d)
Set OutApp = Nothing
'
End Sub

Puoi modificare le istruzioni marcate <<< per adattarle alle tue preferenza

La macro invia una unica mail con tutte le "scadenze" in corso, e segna in colonna G la data odierna; se tra N giorni lo stato e' ancora "scaduto" allora sara' inviata una nuova mail. Il numero N e' ora impostato a 10, ma puo' essere impostato a piacere nella macro (vedi istruzione Franc = 10)

Ovviamente nella tua Private Sub Workbook_Open() inserirai:
Codice: Seleziona tutto
Call InvioEmailScad


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

Re: Invio automatico Mail da Excel, senza uso di bottoni

Postdi alfroning » 03/08/20 12:14

Grazie!

La copio e la provo, sei stato gentilissimo.

Ti darò un feedback

Grazie ancora
alfroning
Utente Junior
 
Post: 12
Iscritto il: 31/07/20 16:19

Re: Invio automatico Mail da Excel, senza uso di bottoni

Postdi alfroning » 03/08/20 12:20

Mi sembra perfetta, grazie.

Una info, al file si aggiungeranno altre gare, dovrò fare qualcosa?

Mi leggo con calma la macro.
alfroning
Utente Junior
 
Post: 12
Iscritto il: 31/07/20 16:19

Re: Invio automatico Mail da Excel, senza uso di bottoni

Postdi Anthony47 » 03/08/20 12:46

La macro ripetera' il controllo tutte le volte che la avvii (o tutte le volte che apri il file, se l'hai agganciata alla Workbook_Open).
Se ci sono nuove gare che vanno in "scaduto" verranno generate nuove mail, indipendentemente da quando le hai inserite nel foglio.
Anche vecchie gare scadute possono generare nuove mail, se sono passati piu' di N giorni dal precedente invio; quindi le vecchie gare da ignorare dovresti eliminarle dall'elenco, oppure dovresti modificare la data in colonna G affinche' segni una data molto futura (1 ago 2030), o inserisci in una colonna un flag di "Ignora" che poi va controllato nella macro

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

Re: Invio automatico Mail da Excel, senza uso di bottoni

Postdi alfroning » 03/08/20 12:58

Grazie e complimenti, mi hai fatto una grandissima cortesia oltre che a procurarmi materia per studiare.

ciao
alfroning
Utente Junior
 
Post: 12
Iscritto il: 31/07/20 16:19

Re: Invio automatico Mail da Excel, senza uso di bottoni

Postdi alfroning » 03/08/20 14:41

Scusa se ti chiedo ancora......quando scrivi BDT che tipo di comando imposti nella macro.

Grazie
alfroning
Utente Junior
 
Post: 12
Iscritto il: 31/07/20 16:19

Re: Invio automatico Mail da Excel, senza uso di bottoni

Postdi Anthony47 » 03/08/20 15:07

BDT e' il nome di una "variabile" usata per comporre il testo della mail; infatti noterai che (dopo i vari BDT = xyz) assegno il suo contenuto al "body" dell'email (.Body = BDT)

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

Re: Invio automatico Mail da Excel, senza uso di bottoni

Postdi alfroning » 03/08/20 15:17

Tks
alfroning
Utente Junior
 
Post: 12
Iscritto il: 31/07/20 16:19


Torna a Applicazioni Office Windows


Topic correlati a "Invio automatico Mail da Excel, senza uso di bottoni":


Chi c’è in linea

Visitano il forum: Nessuno e 27 ospiti