Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario

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

[EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario

Postdi geronimo91 » 20/08/15 12:01

Buongiorno,
premetto che ho ampiamente spulciato questo ottimo forum ma essendo a digiuno di VBA e macro, trovo difficoltà nell'adattare le varie guide alla mia situazione.

Sto curando uno scadenzario degli automezzi ed attrezzature presenti in cantiere, compresi quelli dei subappaltatori.
Ho la necessità di ricevere una mail come promemoria alla mia stessa casella di posta elettronica a 7 giorni dalla scadenza delle assicurazioni e dei bolli.
Programmi utilizzati: Excel 2013 e Outlook 2013
La difficoltà che riscontro è legata al fatto che ci sono tante pagine diverse per ogni subappaltatore; inoltre le caselle da prendere in considerazione sono due e non una sola:

Immagine

Quindi, le funzioni che mi servono sono:
1) Invio mail a -7 giorni dalla scadenza dell' assicurazione (colonna H) e del libretto (colonna G) e che ciò sia valido per ciascuna delle pagine (sono tutte strutturate allo stesso modo);
2) testo della mail che comprenda nome veicolo, targa/matricola e che specifichi se sta per scadere il bollo o l' assicurazione (quest'ultima cosa se si può, altrimenti metterò un avviso generale "controlla scadenza bollo/assicurazione");
3) mi interesse sapere se questo processo possa avvenire anche automaticamente (cosa abbastanza superflua, mi servirebbe solo comprenderlo per un eventuale utilizzo futuro);
4) Potreste dirmi come inserire il comando per inviare una mail per un'eventuale altra scadenza (verifica di sollevamento)? Perché è possibile che in futuro mi possa servire anche comunicare questa informazione.


Vi ringrazio in anticipo e spero di essere stato abbastanza chiaro :D
geronimo91
Newbie
 
Post: 3
Iscritto il: 20/08/15 11:07

Sponsor
 

Re: [EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario

Postdi Anthony47 » 20/08/15 21:59

Ciao geronimo91, benvenuto nel forum.
Dalla tua immagine non si capisce quali sono le colonne con le date da ispezionare; ho supposto la G e la H
Poi assumo che tutti i fogli siano assolutamente simili...
Cio' detto, partendo dal codice di una delle tante "Sub InvioEmail" il codice che dovrebbe andare bene per te e' questo:
Codice: Seleziona tutto
Sub Invioemail33()
'Vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=105254
Dim OutApp As Object, OutMail As Object
Dim EmailAddr As String, Subj As String
Dim BDT As String, I As Long, myCnt As Long, Elenco, FogliO           'FIN QUI E' SONO "DICHIARAZIONI"
'  (a)
Elenco = Array("Ditta1", "Ditta2", "Ditta3")        '<<< L'elenco dei fogli in cui cercare
'
BDT = "Elenco automezzi in scadenza al " & Format(Date, "yyyy-mmm-dd") & vbCrLf

For Each FogliO In Elenco
BDT = BDT & vbCrLf & vbCrLf & "SCADENZE DAL FOGLIO " & FogliO
    Sheets(FogliO).Select                               
'compilazione del testo della mail
    For I = 6 To Cells(Rows.Count, "H").End(xlUp).Row
        If IsDate(Cells(I, "H").Value) Then
            If Cells(I, "H") <= (Date + 7) Or Cells(I, "G") <= (Date + 7) Then
                BDT = BDT & vbCrLf & Cells(I, "C") & " / " & Cells(I, "D") & " - " & "Scad Lib: " & _
                    Format(Cells(I, "G"), "dd-mmm-yyyy") & "Scad Ass: " & Format(Cells(I, "H"), "dd-mmm-yyyy")
                myCnt = myCnt + 1
            End If
        End If
    Next I
Next FogliO


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
Application.Wait (Now + TimeValue("0:00:04"))
'  (c)
Set OutMail = Nothing
'  (d)
Set OutApp = Nothing
'
End Sub
Le righe marcate <<< vanno personalizzate

La macro contiene un loop (For Each FogliO In Elenco / Next FogliO) che seleziona uno alla volta tutti i fogli in cui "guardare" e un secondo loop (For I = 6 To Cells(Rows.Count, "H").End(xlUp).Row /Next I) che controlla una per una le righe dei fogli.

La mail indichera' in quali fogli, Modello /Targa - scadenze relative, ma il testo puo' essere variato variando la composizione di BDT.

Uso del codice:
Da excel: Alt-F11 per aprire l' editor delle macro; Menu /Inserisci /Modulo; copia il codice e incollalo nel frame di dx. Personalizza le righe marcate <<<

All'occorrenza avvierai la macro Invioemail33:
Da Excel, premi alt-F8, scegli Invioemail33 dall' elenco di macro che ti propone, premi Esegui.

Potrebbe essere utile attivare la Invioemail33 all'apertura del file.
A questo scopo, da Excel premi Alt-F11 per andare all'editor delle macro; identifica nel frame Progetto-VbaProject di sx la voce Questa-Cartella_di_Lavoro ed espandila con Doppioclick; poi inserisci questo codice nel frame vuoto di dx:
Codice: Seleziona tutto
Private Sub Workbook_Open()
    Call Invioemail33
End Sub

A questo punto la macro Invioemail33 si avviera' automaticamente all'apertura del file.

Prova e fai sapere, 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: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario

Postdi geronimo91 » 21/08/15 12:11

La macro funziona perfettamente, esattamente come volevo che funzionasse, e sei stato chiarissimo anche per un newbie come me :)
Grazie mille per l'aiuto e per l'incredibile celerità della risposta... questa community è davvero grandiosa :D

P.S.
un'altra piccola informazione... come posso modificare la macro in modo che invii solo le date in scadenza e non quelle già scadute?
geronimo91
Newbie
 
Post: 3
Iscritto il: 20/08/15 11:07

Re: [EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario

Postdi Anthony47 » 23/08/15 22:18

Io non dimenticherei le righe gia' scadute...
Piuttosto userei una colonna libera, es la N (o quella che vuoi tu) per inserire l'informazione che la pratica e' stata presa in carico, e solo in questo caso si ignora la scadenza.
Es se in N scriverai "OK" quando ricevi la notifica e avvii la pratica (ricordandoti di cancellarla quando inserisci la nuova data di scadenza...), allora devi modificare la riga If IsDate(Cells(I, "H").Value) Then in
Codice: Seleziona tutto
If IsDate(Cells(I, "H").Value) And UCase(left(Cells(I, "N"), 2)) <> "OK" Then

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: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario

Postdi geronimo91 » 25/08/15 13:42

Mi interessava tralasciare le date già scadute perché ci sono alcuni mezzi spostati presso altri cantieri e ancora presenti in elenco per un eventuale ritorno (ad ognuno di essi è stato assegnato un numero specifico legato ad una determinata pratica, quindi preferisco conservarli per rendere più agevole la parte burocratica).
Però la tua soluzione è ottima, in questo modo è anche più visibile per altre persone che visioneranno il file :D

Ti ringrazio ancora per la disponibilità e per il supporto fornitomi :D Buona giornata :)
geronimo91
Newbie
 
Post: 3
Iscritto il: 20/08/15 11:07


Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario":


Chi c’è in linea

Visitano il forum: Nessuno e 65 ospiti