Con questa versione esaminerai l'intervallo "C3:C100" (che puoi impostare nel codice) alla ricerca della voce "Scadenza" e invierai tante email quante sono le scadenze.
- Codice: Seleziona tutto
Sub invia_Email_microsoft_outlook_usando_VBA()
Dim myOutlook As Object
Dim otlNewMail As Object
Dim TestoEmail As String, Scad As Range
'
Set myOutlook = CreateObject("Outlook.Application")
'
For Each Scad In Range("C3:C100") '<<< L'area con le "Scadenze"
If Scad.Value = "SCADENZA" Then
Set otlNewMail = myOutlook.CreateItem(0)
' fName = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name '???
With otlNewMail
.to = "email@email.it"
.Subject = "SCADENZA"
.body = "SCADENZA MANUTENZIONE"
.send
End With
End If
Application.Wait (Now + TimeValue("0:00:01"))
Next Scad
Set myOutlook = Nothing
Set otlNewMail = Nothing
End Sub
Purtroppo non hai detto nulla su dove prendere il destinatario, ne' come inserire nel corpo o nel Subject della mail un riferimento utile a inquadrare la scadenza.
Inoltre non hai spiegato come pensi di evitare che domani una scadenza gia' segnalata oggi venga risegnalata. Questo dipende dal vostro processo organizzativo; io al massimo posso fare in modo che la macro segni, in una colonna libera, la data di invio di una mail ed eviti che una seconda mail sia inviata per la stessa Scadenza prima di N giorni.
Quanto all'ipotesi che le mail partano senza la volonta' esplicita dell'utente, si puo' fare usando una macro di WorksheetChange (se l'azione che porta a una Scadenza genera questo evento); oppure con una macro di Workbook_Open, oppure N volte al giorno usando una macro "On Time".
Ciao