ho provato a guardare delle discussioni precedenti simili alla mia richiesta ma non riesco a capirci nulla perchè non conosco per niente il linguaggio vba
Pero' questo e' un forum di assistenza, non uno sportello di sviluppi su misura gratuiti...
Comunque, partendo da una delle numerose macro gia' pubblicate, ho personalizzato questa:
- Codice: Seleziona tutto
Sub Invioemail55()
'Dichiarazioni iniziali:
Dim OutApp As Object, OutMail As Object
Dim EmailAddr As String, Subj As String, DataCol As String, Franc As Long
Dim BDT As String, Nominat As String, mCnt As Long, myScad As Long
' (a)
DataCol = "Z" '<<< Una colonna libera, sara' usata per scriverci la data di sollecito
myScad = 30 '<<< L'anticipo con cui inviare il sollecito
Franc = 10 '<<< Il periodo tra un sollecito e il successivo, in giorni
'
Set OutApp = CreateObject("Outlook.Application")
''compilazione di un testo standard di accompagnamento:
BDT = "Qui ci metti un testo standard per tutti, lungo a piacere" '<<< Testo fisso a piacere
BDT = BDT & vbNewLine & "Cordiali saluti" & vbNewLine '<<< Saluti e firma
BDT = BDT & "Mr. Superpippo" '<<<
'' (b)
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 6) - Int(Now) < myScad And (Int(Now) - Cells(i, DataCol)) > Franc Then
Nominat = Cells(i, 1) & " " & Cells(i, 2) 'Nome Cognome
EmailAddr = Cells(i, 7) 'INDIRIZZO EMAIL
Subj = "Scadenza certificato medico; sig " & Nominat & Format(Cells(i, 6), " dd-mm-yyyy") 'Subj
'
Set OutMail = OutApp.CreateItem(0) 'DA QUI SI CREA E INVIA LA MAIL
With OutMail
.To = EmailAddr
.CC = "tuoIndirizzo@tuoDominio.Zc" '<<< Indirizzo CC
.BCC = ""
.Subject = Subj
.Body = BDT
' .Display 'oppure .send
.Send
End With
'' (c)
Application.Wait (Now + TimeValue("0:00:01"))
Set OutMail = Nothing
mCnt = mCnt + 1
Cells(i, DataCol) = Int(Now)
End If
Next i
'
'' (d)
Set OutApp = Nothing
'
Application.Wait (Now + TimeValue("0:00:01"))
If mCnt > 0 Then
MsgBox ("Inviate N. " & mCnt & " mail per prossima scadenza")
Else
MsgBox ("Nessuna scadenza da sollecitare")
End If
'
End Sub
Va messa in un modulo standard del vba; per questo, partendo da Excel:
-premi Alt-F11 per aprire l'editor delle macro
-Menu /Inserisci /Modulo
-Copia il codice e incollalo nel frame dx del modulo appena creato
Personalizza le tante righe marcate <<< come da commenti.
La macro controlla le date di scadenza, e dove mancano meno di un tot di giorni invia una mail di sollecito; contemporaneamente scrive in una colonna libera la data di invio. In questo modo il giorno dopo non sara' inviato un nuovo sollecito. Superato pero' un tot di giorni viene reinviata la mail di sollecito, se nel frattempo la data di scadenza non e' stata aggiornata.
Il testo della mail e' standard, le personalizzazioni sono contenute nel Subject.
Molti parametri (preavviso, i giorni prima di un secondo sollecito, la colonna libera per scriverci la data, il testo standard del messaggio) sono da personalizzare nella macro (vedi righe marcate <<<).
Quando vuoi eseguire la macro, avvia la Sub InvioEmail55:
-partendo dal foglio dell'anagrafica, premi Alt-F8
-seleziona InvioEmail55 dall'elenco di macro disponibili
-premi Esegui
Se vuoi fare il controllo e inviare le mail all'apertura del file, allora:
-identifica, nell'editor delle macro, nel frame Progetto-VBAProject la "scheda" Questa_cartella_di_lavoro e fai doppioclick
-inserisci questo codice nel frame vuoto di dx:
- Codice: Seleziona tutto
Private Sub Workbook_Open()
Call InvioEmail55
End Sub
Io pero'
sconsiglio questa modalita', perche' (ad esempio) se apri il file per inserire la nuova data di scadenza allora potrebbe partire una mail di sollecito anche per il certificato appena ricevuto.
Fai sapere...