Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

macro per invio mail analizzando scadenze multiple

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 per invio mail analizzando scadenze multiple

Postdi catanese » 26/07/16 23:32

ciao a tutti,

ho due file excel che sfruttano macro per inviare mail allo scadere di una data.
il primo funziona correttamente perche la scadenza di quel prodotto e singola e ho conteggiato in una colonna i giorni restanti alla scadenza, appena il contatore scende sotto i 60 gg mi ivia la mail di alert.

il secondo invece dovrebbe gestire dei corsi con scadenze, quindi per ogni riga che prendera il nome di un cliente, mi servirebbe che la macro verificasse quale cella e in scadenza. A differenza del mio primo file non dovrebbe prendere spunto dalla mancanza giorni ma dovrebbe calcolore lui stesso 60 giorni dal giorno in cui lancio la macro.

vi faccio un esempio del file:

corso1 corso2 corso3 corso4 corso5 mail

cliente1 15-Dec-16 25-Aug-16 01-Jan-17 02-Jan-17 03-Jan-17 mail1
cliente2 16-Dec-16 17-Dec-16 18-Dec-16 19-Dec-16 20-Dec-16 mail2
cliente3 17-Dec-16 25-Aug-16 26-Aug-16 05-Sep-16 06-Sep-16 mail3

e possibile che la macro mandi una mail al destinatario della riga e a me (es. se il corso 3 del cliente1 scade tra 60 giorni deve riceverla sia il cliente che in cc la mail mai).

nel corpo della mai dovrebbe essere specificato il corso in scadenza e la data entro la quale scade, il file ha 20 righe clienti e 10 colonne corsi, unici spazi vuoti sono la colonna B e M solo per comodita visive tra i dati cliente e mail rispetto alle scadenze

utilizzo excel 2010 su windows 7

grazie in anticipo per il supporto
catanese
Newbie
 
Post: 4
Iscritto il: 26/07/16 22:54

Sponsor
 

Re: macro per invio mail analizzando scadenze multiple

Postdi Anthony47 » 28/07/16 01:05

Ciao catanese, benvenuto nel forum.
Ti chiederei di pubblicare un file con l'esatta struttura e qualche riga di dati versosimili; inoltre se pubblichi il codice della macro che usi per la scadenza singola vediamo di riciclare quello senza inventarne un altro.
Ti aspettiamo...
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro per invio mail analizzando scadenze multiple

Postdi catanese » 28/07/16 09:20

ciao Anthony47,

grazie mille per il benvenuto e per aver risposto.

ecco un file simile a quello che vorrei gestire poi effettuo io le modifiche delle caselle di selezione.

http://www.filehosting.org/file/details/589272/New%20Microsoft%20Excel%20Worksheet.zip

e qui il codice che utilizzo per il mio file

Codice: Seleziona tutto
Sub SMAIL()

Dim OLook As Object 'Outlook.Application
Dim MItem As Object 'Outlook.MailItem
Dim FSend As Boolean 'Flag "Send"
Dim Inter As String, CScad As Integer
Dim MAddr As String, MSubj As String

MSubj = "Avviso Di Scadenza"
MAddr = "pinco.pallino@dominio.com"
Inter = "b8:b25,b32:b43,b50:b59"
'
For Each Scad In Range(Inter)
If Scad < (Int(Now) + 60) Then
CScad = CScad + 1
Mex = Mex & "Riga - " & Scad.Row & "  -- " & Scad.Offset&(0, -1).Value & _
     Format(Scad.Value, "  -- dd-mmm-yyyy") & vbCrLf
End If
Next Scad
MsgBox ("Ci sono " & CScad & " scadenze inferiori a " & (Int(Now) + 60))
'
If CScad = 0 Then Exit Sub
'
Set OLook = CreateObject("Outlook.Application")
Set MItem = OLook.createitem(0)
MItem.to = MAddr
MItem.Subject = MSubj
MItem.body = "Buongiorno," & vbCrLf & vbCrLf & "sono presenti prodotti in scadenza, verificare riga: " & vbCrLf & vbCrLf & Mex & vbCrLf & vbCrLf & "pinco pallino" & vbCrLf & "responsabile" & vbCrLf & "mio ufficio" & vbCrLf & "mia ditta"

MItem.send
Application.Wait (Now + TimeValue("0:00:10"))
Set OLook = Nothing
Set MItem = Nothing

End Sub


grazie mille
catanese
Newbie
 
Post: 4
Iscritto il: 26/07/16 22:54

Re: macro per invio mail analizzando scadenze multiple

Postdi Anthony47 » 30/07/16 01:10

http://www.filehosting.org vorrebbe conoscere il mio indirizzo email per condividere il link del file, ma io non sono disponibile a darglielo.
Ti suggerirei l'uso di filedropper.com o un altro dei server elencati qui viewtopic.php?f=26&t=103893&p=605487#p605487 , che non chiedono dati personali per scaricare.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro per invio mail analizzando scadenze multiple

Postdi catanese » 30/07/16 09:16

ciao scusate per l'errore, era ilprimo sito di hosting nella ricerca di google

http://www.filedropper.com/newmicrosoftexcelworksheet_1
catanese
Newbie
 
Post: 4
Iscritto il: 26/07/16 22:54

Re: macro per invio mail analizzando scadenze multiple

Postdi Anthony47 » 01/08/16 11:25

Lavorando sul file che hai pubblicato ho sviluppato questa macro:
Codice: Seleziona tutto
Sub RiepMail()
'Vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=107224
Dim OLook As Object 'Outlook.Application
Dim MItem As Object 'Outlook.MailItem
Dim FSend As Boolean 'Flag "Send"
Dim CScad As Integer, mText As String, cMail As Long, mSheet As String
Dim MAddr As String, MSubj As String
Dim clStart As Long, clHead As Long, mCol As Long, preAvv As Long, SuspEnd As Long

'
clStart = 10        '<<< La prima riga con dati
clHead = 8          '<<< La riga con le intestazioni
mCol = 14           '<<< La colonna con gli indirizzi email; 14=N
preAvv = 30         '<<< Giorni di preavviso
SuspEnd = 10        '<<< Giorni di sospensione prima di un ulteriore mail
mSheet = "Sheet2"   '<<< Il foglio ove si segneranno le mail inviate
'
MSubj = "Avviso Di Scadenza 2"
Set OLook = CreateObject("Outlook.Application")
'
For i = clStart To Cells(Rows.Count, "A").End(xlUp).Row
mText = "Elenco corsi in scadenza per " & Cells(i, "A") & ":" & vbCrLf
CScad = 0
    For j = 3 To Cells(clStart, mCol).End(xlToLeft).Column
        If Cells(i, j) < (Now + preAvv) And (Sheets("Sheet2").Cells(i, j) + SuspEnd) < Now Then
            mText = mText & "Corso:" & Cells(clHead, j) & " -      Scad. " & Format(Cells(i, j), "yyyy-mmm-dd") & vbCrLf
            CScad = CScad + 1
            Sheets(mSheet).Cells(i, j) = Now
        End If
    Next j
    If CScad > 0 Then
        Set MItem = OLook.createitem(0)
        MItem.To = Cells(i, mCol)
        MItem.Subject = MSubj
        MItem.body = mText & vbCrLf & vbCrLf & "pinco pallino" & vbCrLf & "responsabile" & vbCrLf & "mio ufficio" & vbCrLf & "mia ditta"
        MItem.send
'        MItem.display           'Test only
        Application.Wait (Now + TimeValue("0:00:2"))
        Set MItem = Nothing
        cMail = cMail + 1
    End If
Next i
MsgBox ("Totale mail inviate:" & vbCrLf & cMail)
Set OLook = Nothing
End Sub
Le righe marcate <<< vanno personalizzate; i valori inseriti riflettono la situazione del foglio campione.
In particolare la macro segna in un foglio di servizio la data di invio di un sollecito, e per 15 giorni non reinvia un sollecito.

Il file aggiornato e' disponibile qui:
https://www.dropbox.com/s/ju9ppm4ayomq2 ... .xlsm?dl=0

Prova e fai sapere...
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro per invio mail analizzando scadenze multiple

Postdi catanese » 01/08/16 18:53

Spettacolo :D :D :D geniale la seconda Sheet con data e ora invio mail

grazie mille ottimo lavoro come sempre... ho aggiunto solo la mia mail in cc per il resto è piu che perfetto :) :) :)
catanese
Newbie
 
Post: 4
Iscritto il: 26/07/16 22:54


Torna a Applicazioni Office Windows


Topic correlati a "macro per invio mail analizzando scadenze multiple":


Chi c’è in linea

Visitano il forum: alfrimpa e 6 ospiti