Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Macro invio mail automatica con testo da casella

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 invio mail automatica con testo da casella

Postdi eliorimnap » 01/12/15 13:04

Buongiorno,
Complimenti per il forum!
Premetto che ho già dato uno sguardo ai vari ottimi post del forum, ma essendo a digiuno di VBA e macro ho difficoltà nell'adattare le varie guide al mio foglio.

Sto curando uno scadenzario riguardante i nostri mezzi portuali con varie scadenze (ogni mezzo ha la sua pagina nel foglio excel)
Il programma calcola le varie date e nell'ultima colonna mi compare lo stato Valido o Scad ( colonna M )
Avrei la necessità di ricevere una mail quando lo stato è = a SCAD con un testo semicompilato con l'aggiunta del nome della visita Scaduta ( colonna A ) e il nome del Mezzo

Spero di essere stato abbastanza chiaro :roll:

Programmi utilizzati: Excel 2003 e Outlook 2003

Allego immagine del foglio excel

Immagine[/URL]

Grazie in anticipo, spero riusciate a darmi una mano



Grazie in anticipo
Win 7 + Office 2003 Ita + Voglia di imparare ;)
eliorimnap
Newbie
 
Post: 5
Iscritto il: 26/11/15 11:13

Sponsor
 

Re: Macro invio mail automatica con testo da casella

Postdi Anthony47 » 01/12/15 22:51

Ciao eliorimnap, benvenuto nel forum.
Allora partiamo da una delle tante Sub Iviaemail che abbiamo pubblicato, ad esempio in questa discussione: viewtopic.php?f=26&t=104487
Va adattata per scansionare un elenco di fogli, testare il contenuto di colonna M e per aggiungere in una colonna libera la data di invio mail (servira' per evitare di inviare una nuova email per lo stesso motivo nei prossimi 15 giorni, se lo status rimane SCAD); per quest'ultimo scopo io ho usato la colonna Z, se non fosse libera bisogna adattare leggermente il codice.
Ho assunto che il nome del foglio indichi direttamente il nome del Mezzo, da usare nella composizione del messaggio; quindi ho previsto nella macro una istruzione che riepiloghera' quali fogli sono da ispezionare

Il codice risultante:
Codice: Seleziona tutto
Sub Invioemail()
'Vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=105944
''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, myShips, Ship
Dim BDT As String, I As Long, myCnt As Long                      'FIN QUI SONO "DICHIARAZIONI"
'  (a)
'compilazione del testo della mail
BDT = "Elenco delle Visite in scadenza al " & Format(Date, "yyyy-mmm-dd") & vbCrLf
myShips = Array("Nave1", "Nave2")           '<<< Elenco dei fogli da esaminare
For Each Ship In myShips
    Sheets(Ship).Select
    For I = 2 To Cells(Rows.Count, "M").End(xlUp).Row
        If UCase(Left(Cells(I, "M").Value, 4)) = "SCAD" Then
            If Cells(I, "Z") + 15 < Date Then
                Cells(I, "Z").Value = Date
                BDT = BDT & ActiveSheet.Name & " - " & Range("M4").Value & " - " & Cells(I, "A") & _
                    " - Scadenza: " & Format(Cells(I, "H").Value, "dd-mmm-yyyy") & vbCrLf
                myCnt = myCnt + 1
            End If
        End If
    Next I
    BDT = BDT & vbCrLf
Next Ship
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.ppp"                      '<<< 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                               '*** Vedi testo
End With
'  (c)
Set OutMail = Nothing
'  (d)
Set OutApp = Nothing
'
    Application.Wait (Now + TimeValue("0:00:02"))
End Sub

Va inserito in un "Modulo standard" del vba:
-dal tuo foglio excel, premi Alt-F11 per aprire l' editor delle macro
-Menu /Inserisci /Modulo
-copia il codice e inseriscilo nel frame di dx
Le istruzioni marcate <<< vanno personalizzate come da commento sulla linea.

Nota***: non so quale versione di Outlook usi, per cui non so come si comportera' sull'istruzione ".send"; con OL2010 o superiori la mail viene inviata; con OL2003 e inferiori esce un avviso che richiede l'intervento dell'operatore per confermare l'invio; OL2007 non so a quale gruppo appartiene.

La macro inviera' una sola mail riepilogativa delle scadenze rilevate su tutti i fogli; se non ci sono scadenze non verra' inviata nessuna mail.
Una scadenza corrisponde allo status SCAD in colonna M con nessuna data in colonna Z, o comunque con una data inferiore a "15 giorni fa".

Ciao, fai sapere.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro invio mail automatica con testo da casella

Postdi eliorimnap » 02/12/15 09:23

Ciao Anthony47,
grazie per la velocità di risposta!!!
Dovrei fare un elenco infinito di complimenti, ma forse meglio evitare :lol:
La tua macro è prefetta, funziona a meraviglia!!! Le spiegazioni sono chiarissime e dettagliate!!! Complimenti davvero.
E' meglio di come l'avevo immaginata :D

Devo fare due piccoli aggiusti, tipo aggiungere un paio di destinatari email e far partire la macro all'apertura, ma studiando le altre discussioni potrei farcela... non voglio darti ancora fastidio!!!

Lavoro perfetto!!!

Grazie ancora!!

P.S. Uso Outlook 2003 quindi, come previsto da te, esce un avviso per l'invio della mail ;) ma la cosa è trascurabile
Win 7 + Office 2003 Ita + Voglia di imparare ;)
eliorimnap
Newbie
 
Post: 5
Iscritto il: 26/11/15 11:13

Re: Macro invio mail automatica con testo da casella

Postdi Anthony47 » 02/12/15 10:15

Se devi inserire piu' di un destinatario, ti bastera' inserirli nella stessa stringa separati da "PuntoEVirgola"; es
Codice: Seleziona tutto
EmailAddr = "pippo@dominio.com; peppo@dominio.it"

Oppure li inserisci in copia o copia-nascosta, ad esempio
Codice: Seleziona tutto
.CC = "pluto@dominio.com; paper@dominio.it"

Se vuoi far scattare la mail all'apertura del file allora la cosa piu' semplice e' che inserisci questo codice nel modulo ThisWorkbook /QuestaCartellaDiLavoro del vba:
Codice: Seleziona tutto
Private Sub Workbook_Open()
Call Invioemail
End Sub

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro invio mail automatica con testo da casella

Postdi eliorimnap » 02/12/15 15:21

Che tu si fatto Santo!

Funziona perfettamente!!!!

Grazie Anthony
Win 7 + Office 2003 Ita + Voglia di imparare ;)
eliorimnap
Newbie
 
Post: 5
Iscritto il: 26/11/15 11:13

Re: Macro invio mail automatica con testo da casella

Postdi Anthony47 » 02/12/15 23:49

Che tu si fatto Santo!
ImmagineQuando saro' pronto te lo faro' sapere tramite i miei eredi...

Alla prossima!
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro invio mail automatica con testo da casella

Postdi eliorimnap » 30/11/16 11:35

Ciao Anthony47,
Sono nuovamente sulla macro sopra riportata... spero sempre in un tuo aiuto miracoloso (da Santo :lol: )
Sono passato a Office Home and Business 2010... e la macro mi da errore (non capisco se lo da dal lato Excel o Outlook)... credo sia dovuto a quello. Credi che sia possibile?

L'erroremi viene evidenziato verso la fine della macro, esattamente qui:

.send '*** Vedi testo

Cosa posso fare?
Grazie infinite
Win 7 + Office 2003 Ita + Voglia di imparare ;)
eliorimnap
Newbie
 
Post: 5
Iscritto il: 26/11/15 11:13

Re: Macro invio mail automatica con testo da casella

Postdi Anthony47 » 30/11/16 20:56

Prova ad ggiungere l'istruzione marcata +++ in questa posizione e riprova:
Codice: Seleziona tutto
    .send                               '*** Vedi testo
    Application.Wait (Now + TimeValue("0:00:02"))     '+++++
End With


Se non cambia l'esito, allora descrivi in modo completo il messaggio di errore che compare, e
prova a sostituire il ".send" con
Codice: Seleziona tutto
.Display
Stop
Quindi riprova a eseguire la macro, e sullo Stop controlla che la mail cosi' visualizzata sia completa e che se premi Invio parta regolarmente.
Poi, dall'editor delle macro, premi F5 per completare l'esecuzione e ripristina il .Send

Aggiornaci nel prossimo messaggio.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro invio mail automatica con testo da casella

Postdi eliorimnap » 01/12/16 17:09

Ciao,
Grazie per la risposta rapida e dettagliata.
Ho fatto le prove che mi hai detto, con la prima continua a darmi errore, mentre con la seconda mi crea il messaggio tramite outlook , ma devo dargli l'ok per inviarlo. Prima partiva in automatico
Sarebbe bello partisse in automatico, ma se è complicato Mi va bene così :)

Grazie per l'aiuto sempre professionale... confermo la tua Santità

:lol: :lol: :lol: :lol: :lol: :lol: :lol:
Win 7 + Office 2003 Ita + Voglia di imparare ;)
eliorimnap
Newbie
 
Post: 5
Iscritto il: 26/11/15 11:13

Re: Macro invio mail automatica con testo da casella

Postdi Anthony47 » 03/12/16 20:49

Comunque rimango sempre parzialmente in disaccordo.

Quanto al problema, avevo chiesto il messaggio di errore completo...
Ma con OL2003 usavi il comando ".Send" e faceva l'invio?
Non ho mai installato OL2010, mentre OL2013 e successiva dovrebbe consentire l'invio programmatico di email, se sul Pc e' presente un antivirus riconosciuto e aggiornato.
L'impostazione Outlook da settare e':
-Menu /File /Opzioni /Centro protezione; premi Impostazioni Centro protezione /Accesso programmatico; spunta la voce "Segnala attivita' sospette se il software antivirus e' inattivo o non aggiornato.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Macro invio mail automatica con testo da casella":


Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti