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 Pro + Office 2010 Ita + Voglia di imparare ;)
eliorimnap
Newbie
 
Post: 7
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.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
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 Pro + Office 2010 Ita + Voglia di imparare ;)
eliorimnap
Newbie
 
Post: 7
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
Avatar utente
Anthony47
Moderatore
 
Post: 19196
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 Pro + Office 2010 Ita + Voglia di imparare ;)
eliorimnap
Newbie
 
Post: 7
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!
Avatar utente
Anthony47
Moderatore
 
Post: 19196
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 Pro + Office 2010 Ita + Voglia di imparare ;)
eliorimnap
Newbie
 
Post: 7
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.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
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 Pro + Office 2010 Ita + Voglia di imparare ;)
eliorimnap
Newbie
 
Post: 7
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
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro invio mail automatica con testo da casella

Postdi eliorimnap » 07/12/16 11:13

Ciao Anthony47,
non volevo sorvolare sul problema o omettere di rispondere al tuo messaggio, ma era solo per non darti ancora fastidio.
comunque ti rispondo per completezza.
L'errore è "Errore di run-time '287': Errore definito dall'applicazione o dall'oggetto"
e quando si apre il visual Mi evidenzia in giallo il rigo di .send

Con OL2003 usciva in countdown che mi avvisava dell'invio della mail e poi partiva

Per le impostazioni di Outlook che mi dicevi di settare, il mio antivirus (VirIt) non viene rilevato.

Scusa per l'omissione della risposta

Ciao e grazie
Win 7 Pro + Office 2010 Ita + Voglia di imparare ;)
eliorimnap
Newbie
 
Post: 7
Iscritto il: 26/11/15 11:13

Re: Macro invio mail automatica con testo da casella

Postdi Anthony47 » 08/12/16 00:58

Il comportamento normale in OL2003 e' che compare un messaggio che avverte che qualcuno sta cercando di inviare automaticamente una mail e invita a premere Invia /Non inviare, e il messaggio rimane fintanto che qualcuno non preme una delle due scelte. Evidentemente tu hai installato un componente che preme Yes, magari il noto "ClickYes".
Se Outlook non riconosce il tuo antivirus, o l'antivirus non e' aggionato, allora comparira' un messaggio che non so simulare perche dovrei disinstallare l'antivirus sul mio pc.
Solo per prova, modifica l'impostazione di sicurezza in "Non segnalare mai attivita' sospette (scelta non consigliata)"

Prova un invio e ripristina subito sul livello di sicurezza standard

Ultima prova sul codice, inserisci anche prim del .Send la riga
Codice: Seleziona tutto
Application.Wait (Now + TimeValue("0:00:02"))


Ultimissima prova, c'e' differenza se Outlook al momento dell'invio tramite macro e' aperto o no?

Se invece ti sta bene anche l'invio manuale (penso che fosse questo il significato di "ma devo dargli l'ok per inviarlo") allora possiamo anche smettere qui.

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

Re: Macro invio mail automatica con testo da casella

Postdi eliorimnap » 09/12/16 08:28

Ciao, rispondo alle tue domanda ringraziandoti sempre.

Il comportamento normale in OL2003 e' che compare un messaggio che avverte che qualcuno sta cercando di inviare automaticamente una mail e invita a premere Invia /Non inviare, e il messaggio rimane fintanto che qualcuno non preme una delle due scelte. Giusto Evidentemente tu hai installato un componente che preme Yes, magari il noto "ClickYes". Onestamente non ricordo, proverò a montare il vecchio pc
Se Outlook non riconosce il tuo antivirus, o l'antivirus non e' aggionato, allora comparira' un messaggio che non so simulare perche dovrei disinstallare l'antivirus sul mio pc.
Solo per prova, modifica l'impostazione di sicurezza in "Non segnalare mai attivita' sospette (scelta non consigliata)" non trovando/riconoscendo l'antivirus, non mi permette di fare nessuna scelta. Giusto per completezza di informazioni, non conosco molto bene OL, lo uso solo per questo scopo, io uso WLM

Prova un invio e ripristina subito sul livello di sicurezza standard

Ultima prova sul codice, inserisci anche prim del .Send la riga
CODICE: SELEZIONA TUTTO
Application.Wait (Now + TimeValue("0:00:02")) Non cambia nulla


Ultimissima prova, c'e' differenza se Outlook al momento dell'invio tramite macro e' aperto o no? Non c'è differenza

Se invece ti sta bene anche l'invio manuale (penso che fosse questo il significato di "ma devo dargli l'ok per inviarlo") allora possiamo anche smettere qui. Si apre sempre il visual, ma comunque mi crea il messaggio con OL, quindi Va benissimo così ti ringrazio ancora

Ciao
Ciao
Win 7 Pro + Office 2010 Ita + Voglia di imparare ;)
eliorimnap
Newbie
 
Post: 7
Iscritto il: 26/11/15 11:13

Re: Macro invio mail automatica con testo da casella

Postdi Anthony47 » 10/12/16 03:03

Be', almeno pero' elimina l'istruzione Stop, e aggiungi questa riga subito prima di .Send,cosi' la macro si completa automaticamente.
Codice: Seleziona tutto
    On Error Resume Next                          'AGGIUNGI!
    .send                               '*** Vedi testo
    Application.Wait (Now + TimeValue("0:00:02"))     

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


Chi c’è in linea

Visitano il forum: Ricky0185 e 43 ospiti