Condividi:        

Avviso scadenza data tramite mail automatica

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

Avviso scadenza data tramite mail automatica

Postdi Ubuntus » 24/07/15 16:02

Buongiorno

Vedendo questo topic volevo creare qualcosa di simile, un invio di campi in modo automatico ad una mail tramite outlook
viewtopic.php?f=26&t=99928&start=20

Nella tabella Dati ( foglio DB) ho le seguenti 5 colonne, "Nome Cognome visita Scadenza Scadutogg"
Dove ci sono i nomi di persona, le date la data di scandeza e da quanti giorni mi scade

Vorrei che ad ogni avvio di excel mi inviasse automaticamente un elenco di persone la cui scadenza in giorni superi i 30 GG inviandomi tutta la riga intera con i 5 campi

La parte di invio dovrebbe essere qualcosa del genere, mi invia automaticamente la mail con l'elenco di persone

Codice: Seleziona tutto
Sub MAILAUTOMATICA()
Dim myOutlook As Object
Dim myMailItem As Object
Dim variabileEmailDelDestinatario As String
variabileEmailDelDestinatario = "casa@dominio.it"
Dim TestoEmail As String
TestoEmail = [B2]
If UCase([L2]) <> "YES" Then Exit Sub
Set otlApp = CreateObject("Outlook.Application")
Set otlNewMail = otlApp.CreateItem(olMailItem)
With otlNewMail
.To = variabileEmailDelDestinatario
.Subject = "Scadenze"
.body = TestoEmail
.Display
.send
End With
End Sub


Mi manca la parte di ordinamento automatico ed invio dei 5 campi , mettiamo che questo db contenga 300 righe come faccio....al momento riesco ad inviare solo il testo nella riga B2

grazie
Ubuntus
Utente Junior
 
Post: 81
Iscritto il: 24/07/15 15:56

Sponsor
 

Re: Avviso scadenza data tramite mail automatica

Postdi Anthony47 » 24/07/15 23:55

Ciao ubuntus, benvenuto nel forum.

Allora tu vuoi scansionare tutto il foglio e inserire nel messaggio le info di tutte le persone "in scadenza". Visto che hai usato If UCase([L2]) <> "YES" Then Exit Sub devo immaginare che la colonna L contenga Yes se "in scadenza" e altro negli altri casi.
Devi quindi creare un loop che scorre tutte le righe del foglio e inserisce nella mail di riepilogo quelle che hanno Yes in colonna L.
Contemporaneamente invece di calcolare "TestoEmail" solo su colonna B la calcolerai su tutte le cinque colonne, che immagino siano B:F.
Cio' detto, la seguente variante dovrebbe produrre quanto richiesto:
Codice: Seleziona tutto
Sub MAILAUTOMATICA()
Dim otlApp As Object
Dim otlNewMail As Object
Dim variabileEmailDelDestinatario As String
variabileEmailDelDestinatario = "casa@dominio.it"
Dim TestoEmail As String
TestoEmail = "Elenco scadenze al " & Format(Now, "dd-mmm-yyyy")
For i = 2 To Cells(Rows.Count, "B").End(xlUp).Row
    TestoEmail = Cells(i, 2) & " " & Cells(i, 3) & " " & Cells(i, 4) & " " & Cells(i, 5) & " " & Cells(i, 6)
    If UCase(Cells(i, "L")) = "YES" Then
        'Vedi Nota **
        TestoEmail = TestoEmail & vbCrLf & _
            Cells(i, 2) & " " & Cells(i, 3) & " " & Cells(i, 4) & " " & Cells(i, 5) & " " & Cells(i, 6)
    End If
    Set otlApp = CreateObject("Outlook.Application")
    Set otlNewMail = otlApp.CreateItem(olMailItem)
    With otlNewMail
    .to = variabileEmailDelDestinatario
    .Subject = "Scadenze"
    .body = TestoEmail
'    .Display
    .send
    End With
Next i
Set otlNewMail = Nothing
Set otlApp = Nothing
End Sub

Nota **: hai detto che hai un campo data, ma non hai spiegato quale e' questa colonna; per esso, nel calcolo del TestoEmail invece di usare il contenuto della cella [es Cells(i, 4)] dovrai usare una variante con Format, es Format(Cells(i, 4), "yyyy-mmm-dd")

Quando vuoi far partire la mail di notifica avvia la Sub MAILAUTOMATICA; da Excel: Alt-F8, scegli MAILAUTOMATICA dall'elenco di macro disponibili, premi Esegui.
Se vuoi inviare la mail quando il file Excel viene aperto:
-nell'editor delle macro, posizionati sul modulo Questa_Cartella_di_Lavoro e inseriscici questa macro:
Codice: Seleziona tutto
Private Sub Workbook_Open()
Call MAILAUTOMATICA
End Sub

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

Re: Avviso scadenza data tramite mail automatica

Postdi Ubuntus » 25/07/15 17:35

"Nome Cognome visita Scadenza Scadutogg Scaduto(si/no)
Gianni ubunto corso A 30/07/2015 -5 No

Quello che comanda è la colonna scaduto...
Importante che all apertura del file mi invii automaticamente la mail con le persone che risultano scadute

Lunedi all lavoro dove ho il file lo provo, per il momento grazie
Ubuntus
Utente Junior
 
Post: 81
Iscritto il: 24/07/15 15:56

Re: Avviso scadenza data tramite mail automatica

Postdi Ubuntus » 27/07/15 08:52

Mi genera automaticamente tantissime mail, ne vorrei una sola ma riassuntiva, piuttosto mettere un filtro che non me ne invia per un certo tot di tempo

Un esempio dei campi che ho messo ora

Nome Cognome Altro Scadenza Scaduto gg Oggi
Marta Candido 10/07/2015 17 YES

Un controllo che vorrei aggiungere è che mi ordini la mail in base alla colonna E scaduto gg in modo crescente

Codice: Seleziona tutto

Sub MAILAUTOMATICA()
Dim otlApp As Object
Dim otlNewMail As Object
Dim variabileEmailDelDestinatario As String
variabileEmailDelDestinatario = "@dominiuo.it"
Dim TestoEmail As String
TestoEmail = "Elenco scadenze al " & Format(Now, "dd-mmm-yyyy")
For I = 2 To Cells(Rows.Count, "E").End(xlUp).Row
    TestoEmail = Cells(I, 1) & " " & Cells(I, 2) & " " & Cells(I, 4) & " " & Cells(I, 5) & " "
    If UCase(Cells(I, "F")) = "YES" Then
        'Vedi Nota **
        TestoEmail = TestoEmail & vbCrLf & _
            Cells(I, 1) & " " & Cells(I, 2) & " " & Format(Cells(I, 4), "yyyy-mmm-dd") & " " & Cells(I, 5) & " "
    End If
    Set otlApp = CreateObject("Outlook.Application")
    Set otlNewMail = otlApp.CreateItem(olMailItem)
    With otlNewMail
    .To = variabileEmailDelDestinatario
    .Subject = "Scadenze"
    .body = TestoEmail
'    .Display
    .send
    End With
Next I
Set otlNewMail = Nothing
Set otlApp = Nothing
End Sub
Ubuntus
Utente Junior
 
Post: 81
Iscritto il: 24/07/15 15:56

Re: Avviso scadenza data tramite mail automatica

Postdi Anthony47 » 28/07/15 01:30

No, quel codice non l'ho pubblicato io; ne sono sicurissimo...
Probabilmente e' stata la cia mentre controllava il mio pc, oppure mio nipote di 8 anni mentre io mi facevo una birra; oppure io ma dopo essermi fatto due o tre birre, quindi non vale.
:oops: :oops:
Questo ha piu' chance di essere idoneo:
Codice: Seleziona tutto
Sub MAILAUTOMATICA()
Dim otlApp As Object
Dim otlNewMail As Object
Dim variabileEmailDelDestinatario As String
variabileEmailDelDestinatario = "@dominiuo.it"
Dim TestoEmail As String
TestoEmail = "Elenco scadenze al " & Format(Now, "dd-mmm-yyyy")
For I = 2 To Cells(Rows.Count, "E").End(xlUp).Row
    If UCase(Cells(I, "F")) = "YES" Then
        'Vedi Nota **
        TestoEmail = TestoEmail & vbCrLf & _
            Cells(I, 1) & " " & Cells(I, 2) & " " & Format(Cells(I, 4), "yyyy-mmm-dd") & " " & Cells(I, 5) & " "
    End If
Next I
Set otlApp = CreateObject("Outlook.Application")
Set otlNewMail = otlApp.CreateItem(olMailItem)
With otlNewMail
    .To = variabileEmailDelDestinatario
    .Subject = "Scadenze"
    .body = TestoEmail
    '    .Display
    .send
End With
Application .Wait(Now + TimeValue("0:00:02"))
Set otlNewMail = Nothing
Set otlApp = Nothing
End Sub

Quanto all'ordine di presentazione, devi ordinare il tuo foglio per colonna E prima di avviare la macro; eventualmente registri una macro che fa questo ordinamento, poi in testa alla Sub MAILAUTOMATICA, sulla seconda riga, inserisci
Codice: Seleziona tutto
Call NomeDellaMacro

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

Re: Avviso scadenza data tramite mail automatica

Postdi Ubuntus » 28/07/15 10:05

Ok grazie perfetto ora funziona 8) :)

mi cercherò una macro che me li ordina, usando excel 2007 va posizionato li

Codice: Seleziona tutto

Sub MAILAUTOMATICA()
NomeDellaMacro *va inserito qua ?
Dim otlApp As Object
Dim otlNewMail As Object
Dim variabileEmailDelDestinatario As String
variabileEmailDelDestinatario = "@dominiuo.it"
Dim TestoEmail As String
TestoEmail = "Elenco scadenze al " & Format(Now, "dd-mmm-yyyy")
For I = 2 To Cells(Rows.Count, "E").End(xlUp).Row


è possibile far andare la macro anche con il file chiuso ?
Ubuntus
Utente Junior
 
Post: 81
Iscritto il: 24/07/15 15:56

Re: Avviso scadenza data tramite mail automatica

Postdi Anthony47 » 30/07/15 01:57

Si, l'istruzione Call NomeDellaMacro va messa subito dopo la riga Sub MAILAUTOMATICA()

La macro che ordina basta che te la registri sul tuo pc; vedi l'help on line di Excel alla voce "Creare una macro".

Per eseguire la macro il file va aperto.

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

Re: Avviso scadenza data tramite mail automatica

Postdi supermorenita » 05/09/15 18:29

Ciao,
dopo svariate ricerche di un programma che mi consentisse di caricare uno scadenzario in excel per poter avere una notifica ed un inoltro automatici della mail ai clienti, ho visto alcuni vostri fantastici post.
State facendo quello che sto cercando, ma che da sola non so fare, essendo a completo digiuno della gestione delle macro.

ho un file excel con 6 colonne:
A data odierna
B data scadenza
C adempimento
D cliente
E mail cliente
F azione (invia mail o controllo ricevuta)

In colonna F ho impostato una formula che 15 giorni prima della scadenza indicata in colonna B mi ricordi che devo inviare una mail al cliente /invia mail) e, una volta superata la scadenza, mi ricordi ci controllare se ho effettivamente fatto il lavoro.

Le mie competenze terminano qui: come a creare la macro che mi consenta di effettuare l'invio? devo appoggiarmi sempre ad outlook?

Se poteste aiutarmi ve ne sarei grata!

Grazie, Chiara
supermorenita
Newbie
 
Post: 3
Iscritto il: 05/09/15 18:06

Re: Avviso scadenza data tramite mail automatica

Postdi Anthony47 » 07/09/15 00:34

Ciao supermorenita, benvenuta nel forum.

Per l'invio programmatico di email devi disporre di Outlook; ci sono altri strumenti, ma hanno un comportamento piu' elusivo e quindi non suggerisco come usarli.
Conferma che hai Outlook, e quale versione, e ne possiamo parlare...

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

Re: Avviso scadenza data tramite mail automatica

Postdi supermorenita » 15/09/15 14:36

Ciao, intanto grazie!
Ho Outlook 2007 (e anche Livemail)

ciao
supermorenita
Newbie
 
Post: 3
Iscritto il: 05/09/15 18:06

Re: Avviso scadenza data tramite mail automatica

Postdi Anthony47 » 16/09/15 16:43

Allora, partendo da una delle tante soluzioni pubblicate ho preparato il seguente codice:
Codice: Seleziona tutto
Sub MAILAUTOMATICA()
Dim otlApp As Object, otlNewMail As Object, I As Long
Dim TestoTesta As String, TestoCoda As String
'
TestoTesta = "Testo a piacere 1"                        '<<<
TestoCoda = "Cordiali saluti" & vbCrLf & "Pinco Palla"  '<<<
'
Set otlApp = CreateObject("Outlook.Application")
For I = 2 To Cells(Rows.Count, "B").End(xlUp).Row
'    If UCase(Cells(I, "F")) = "INVIA MAIL" And Cells(I, "G").Value < (Now - 10) Then
    If Cells(I, "B").Value <> "" And Cells(I, "B").Value < (Now + 15) And Cells(I, "G").Value < (Now - 15) Then
        Set otlNewMail = otlApp.CreateItem(olMailItem)
        With otlNewMail
            .To = Cells(I, "E").Value
            .cc = "mioIndirizzo@mioDominio.zczc"        '<<< Eventuale indirizzo cc
            .Subject = "Prossima scadenza " & Cells(I, "C") & " (" & Format(Cells(I, "B").Value, "dd-mmm-yyyy") & ")"
            .body = TestoTesta & vbCrLf & Cells(I, "C").Value & ", scadenza: " & Format(Cells(I, "B"), "yyyy-mmm-dd") & _
                vbCrLf & TestoCoda
            .Display
'            .send.nonConsigliato
        End With
        Cells(I, "G").Value = Int(Now)
        Application.Wait (Now + TimeValue("0:00:02"))
        Set otlNewMail = Nothing
    End If
Next I
Set otlApp = Nothing
End Sub
Questa si comporta come segue:
-lavora sulle righe che in colonna B (prossima scadenza) hanno una data compilata
-se la scadenza in colonna B e' entro i prossimi 15 giorni, E in colonna G c'e' una data che e' piu' vecchia di 10 gg, allora fa scattare l'invio email
-il contenuto di col F e' ignorato
-la macro segna in Colonna G la data di invio di una mail; una ulteriore mail potra' partire solo se la data in colonna G e' piu' vecchia di 15 gg rispetto a "oggi". Quindi ci sono 15 giorni perche' la data di scadenza venga aggiornata.
-poiche' le mail sono verso terzi, la macro si limita a visualizzare l'email pronta; tocca a te premere Invio se sei convinto, oppure cancellare l'email se sai che non e' il caso di sollecitare.
-la macro richiede che colonna G sia libera, perche' verra' usata per scriverci la data di invio mail. Se G non e' disponibile allora va adattata la macro in un paio di punti.
-il testo dell'email contiene un preambolo comune, il contenuto di colonna C e la sua scadenza, un postambolo comune; preambolo e postambolo sono liberi (vedi le istruzioni marcate <<<).
-la mail e' prevista vada in cc a un indirizzo che immagino debba essere il tuo, da personalizzare.

Quanto alla colonna A della tua tabella, che dici contiene la data odierna, non ne vedo l'utilita'; io l'ho ignorata.

Operativamente:
Da excel: Alt-F11 per aprire l' editor delle macro; Menu /Inserisci /Modulo; copia il codice e incollalo nel frame di dx.
Personaliza le istruzioni marcate <<<

Torna su Excel e salva il file (in formato .xlsm).
Quando vuoi far partire la mail di notifica avvia la Sub MAILAUTOMATICA; da Excel: Alt-F8, scegli MAILAUTOMATICA dall'elenco di macro disponibili, premi Esegui.
Se vuoi eseguira la macro all'apertura del file segui le istruzioni gia' date a ubuntus qui: viewtopic.php?f=26&t=105088&p=615665#p613724

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


Torna a Applicazioni Office Windows


Topic correlati a "Avviso scadenza data tramite mail automatica":


Chi c’è in linea

Visitano il forum: Nessuno e 52 ospiti

cron