Poiche' una macro di Excel possa eseguirsi il file va aperto, quindi l' ipotesi del foglio silente io la ignorero' (tu puoi ricorrere ad altri script per aprire il file alle 00:00 di ogni giorno e richiuderlo dopo 5 minuti, ma queste sono utility di sistema e non di Office; per dire che non le conosco).
Cio' detto, ti potrebbe aiutare questa macro:
- Codice: Seleziona tutto
Sub Invioemail()
'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
Dim BDT As String, I As Long, myCnt As Long 'FIN QUI SONO "DICHIARAZIONI"
' (a)
Sheets("Foglio2").Select '<<< Il tuo Foglio con i nominativi e le date
'compilazione del testo della mail
BDT = "Elenco dei nominativi in scadenza al " & Format(Date, "yyyy-mmm-dd") & vbCrLf
For I = 2 To Cells(Rows.Count, "K").End(xlUp).Row
If IsDate(Cells(I, "K").Value) Then
If Cells(I, "K") = Date Then
BDT = BDT & Cells(I, "B") & vbCrLf
myCnt = myCnt + 1
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 = "TuaEmail@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
'.Display 'or use .send
.send
End With
' (c)
Set OutMail = Nothing
' (d)
Set OutApp = Nothing
'
Application.Wait (Now + TimeValue("0:00:02"))
End Sub
Questa macro va inserita in un modulo standard del vba; da excel:
-Alt-F11 per aprire l' editor delle macro; Menu /Inserisci /Modulo; copia il codice e incollalo nel frame di dx.
Le istruzioni marcate <<< vanno personalizzate.
Se vuoi avviare la macro automaticamente all' apertura del file, allora inserisci nel modulo Questa-Cartella_diLavoro (visibile nel frame Progetto - VBAProject a sinistra) questo codice:
- Codice: Seleziona tutto
Private Sub Workbook_Open()
Call Invioemail
End Sub
Se vuoi lanciare manualmente la macro:
-da Excel premi Alt-F8, seleziona Invioemail dall' elenco delle macro disponibili, premi Esegui.
Spero sia di qualche utilita'.
Ciao