Sono completamente digiuna di programmazione e ho bisogno di aiuto perchè non riesco a trovare il codice che fa al caso mio.
Ho un elenco di persone, a coppie, ognuna delle quali presenta un' email (email 1 nella colonna B e email 2 nella colonna D).
Nella colonna E ho una data che rappresenta la data in cui tale persona deve mandarmi un file
nella colonna F ho i giorni di anticipo in cui deve essere avvisata tale persona via email (3 giorni)
nella colonna G ho il messaggio " Devi mandarmi la mail tra tre giorni, quindi il (data della colonna E).
nella colonna H vorrei far comparire la data in cui la mail è stata inviata
Il problema principale lo ho nelle macro.
Ho creato un Form con tre bottoni: il primo con Invio mail, il secondo con Controlla file, e il terzo con esci.
Ho trovato questo codice su questo forum.
- Codice: Seleziona tutto
Sub invia_email()
MsgBox ("ACCEDI AD OUTLOOK PRIMA DI PROCEDERE") ' MESSAGGIO: APRI OUTLOOK
oggi = Date
ultimariga = Range("A65000").End(xlUp).Row ' CALCOLA ULTIMA RIGA DELLA TABELLA
For i = 2 To ultimariga
If Range("G" & i) <> "" Then GoTo Salta ' SALTA L'ELABORAZIONE SE E' GIA' SOLLECITATO
deadline = Range("B" & i).Value - (30 * Range("C" & i).Value) ' CALCOLA LA DATA DI RIFERIMENTO (30 giorni X mesi col. "C")
If oggi < deadline Then GoTo Salta
variabileEmailDelDestinatario = Range("A" & i).Value ' DA QUI IN POI ESPORTA IN OUTLOOK
allegato = Range("E" & i).Value
If Dir(allegato) = "" Then GoTo ErroreUno ' CONTROLLA L'ESISTENZA DEL FILE ALLEGATO (sennò genera un errore)
Set VarOggApplicazioneOutlook = CreateObject("Outlook.Application")
Set VarOggMailInOutlook = VarOggApplicazioneOutlook.CreateItem(olMailItem)
VarOggMailInOutlook.To = variabileEmailDelDestinatario
VarOggMailInOutlook.Subject = "SCADUTO"
VarOggMailInOutlook.Body = Range("D" & i).Value & " - " & allegato & " - " & Range("F" & i).Value
VarOggMailInOutlook.Attachments.Add allegato
VarOggMailInOutlook.Display ' OPZIONE PREVIEW EMAIL (usa la riga sotto se vuoi inviare direttamente)
' VarOggMailInOutlook.Send ' OPZIONE SPEDISCI DIRETTAMENTE
Range("G" & i) = oggi ' ANNOTA LA DATA DEL SOLLECITO SUL DATABASE nella colonna "G"
Salta:
Next i
GoTo Fine
ErroreUno:
MsgBox ("Errore su Scaduto " & Range("A" & i).Value & " :allegato INESISTENTE")
GoTo Salta
Fine:
End Sub
Quando premo sul primo bottone dovrebbe mandare una mail con il testo della colonna G ed E ai due indirizzi mail della riga corrispondente quando la data di oggi è minore della deadline.
Non riesco a far si che ci siano le due mail nell'invio, e mettendo anche una lista di mail di prova tutte con oggi<deadline, lo manda solo alla prima mail, quindi next i non funziona proprio. Premetto che questo codice mi funzionava solo per una mail quindi outlook mi si apriva ma non so come modificarlo a mio uso.
Ho gia configurato outlook con l'indirizzo mail che dovrebbe inviare le mail.
Secondo problema.
quando premo il secondo bottone vorrei mi si aprisse in file excel dove ho salvato i dati, il foglio 3 di tale foglio, per controllare che non vi siano persone sotto la scadenza a cui la mail non sia stata inviata. Mi potete aiutare?
Terzo problema, scontato per molti.
Tale macro l'ho aperta nel file excel da cui deve leggere i dati. Quale è il modo per salvare tale programma in modo tale da aprirlo staccato dal file e far si che lui legga i dati dal file excel e lavori?
So che ho chiesto la luna. Grazie mille per chi vorrà aiutarmi