Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Scandenziario via Mail

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

Scandenziario via Mail

Postdi Theozz » 06/04/17 12:21

Buon giorno a tutti , apro questo Topic perché non sono molto bravo con le macro.
Per esigenze aziendali avrei bisogno di questa particolare Macro che invii una settimana prima della scadenza dell'assicurazione e della revisione dei vari mezzi una mail ad una mail aziendale.
Grazie a tutti in anticipo e scusate il disturbo
Theozz
Newbie
 
Post: 2
Iscritto il: 06/04/17 12:15

Sponsor
 

Re: Scandenziario via Mail

Postdi alfrimpa » 06/04/17 12:40

Ciao Theozz

Allega un file di esempio strutturalmente uguale al tuo con dati fittizi.

Dovresti specificare come vuoi che la macro sia eseguita ossia cliccando un pulsante o cos'altro?
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Scandenziario via Mail

Postdi Theozz » 13/04/17 11:10

Guarda scusami la risposta così tardi ma ho avuto impegni lavorativi , comunque ti posto subito un foglio di esempio.La macro vorrei che funzionasse diciamo sempre , che vada in automatico e che invii 2 email differenti.la prima ad 1 settimana della scadenza assicurazione , la seconda ad 1 mese dalla scadenza della revisione.
Immagine
Theozz
Newbie
 
Post: 2
Iscritto il: 06/04/17 12:15

Re: Scandenziario via Mail

Postdi alfrimpa » 13/04/17 13:59

Ciao Theozz

Ti avevo chiesto un file di esempio (con un'immagine non si può far nulla).

E poi cosa intendi per "automaticamente"?

Qualcosa dovrà succedere per lanciare la macro.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Scandenziario via Mail

Postdi Anthony47 » 15/04/17 02:30

Tra le tante versioni di macro potremmo partire da quanto proposto ad altro Utente in questa discussione, con poche revisioni: viewtopic.php?f=26&t=104487
Inoltre, per evitare doppi invii di email useremo due colonne libere per indicare la data di invio email. Io ho usato colonna Z per la mail di invio scadenza Assicurazione e colonna AA per scadenza Revisione.

Per MIA semplificazione ti suggerisco due macro per l'invio delle mail; quella per le scadenze Assicurazioni corrisponde a questo codice:
Codice: Seleziona tutto
Sub InvioemailAss()
'Vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=104487
'Vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=108380
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("Foglio1").Select                                '<<< Il tuo Foglio con i nominativi e le date
'compilazione del testo della mail
BDT = "Elenco delle ASSICURAZIONI in scadenza al " & Format(Date, "yyyy-mmm-dd") & vbCrLf '<<<**
For I = 2 To Cells(Rows.Count, "E").End(xlUp).Row
    If IsDate(Cells(I, "E").Value) Then
        If Cells(I, "E") < (Date + 7) And (Date - Cells(I, "Z")) > 5 Then     '<<<**
            BDT = BDT & Cells(I, "A") & " Scade al " & Format(Cells(I, "E"), "dd-mmm-yy") & vbCrLf     '<<<**
            myCnt = myCnt + 1
            Cells(I, "Z") = Date
        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
.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; partendo 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 come da commento;

Creerai poi una seconda copia della macro, che chiamerai Sub InvioemailRevis in cui dovrai modificare le le righe marcate <<<**
-invece del riferimento a colonna E userai colonna G
-invece del riferimento a colonna Z userai colonna AA
-Come primo valore di BDT metterai "Elenco delle REVISIONI in scadenza etc etc"
-la riga
If Cells(I, "E") < (Date + 7) And (Date - Cells(I, "Z")) > 5 Then
e' piu' complessa da modificare; nella Sub InvioemailRevis deve diventare
Codice: Seleziona tutto
If Cells(I, "G") < (Date + 30) And (Date - Cells(I, "AA")) > 15 Then 


In questo modo le macro fanno un invio 7 gg /30 gg prima della scadenza; ma se dopo 5 gg /15 gg la scadenza non e' stata prolungata viene fatto un secondo invio mail, e cosi' ogni 5 gg /15 gg.

Se vuoi avviare queste macro automaticamente all' apertura del file, allora inserisci nel modulo Questa-Cartella_diLavoro del vba (visibile nel frame Progetto - VBAProject a sinistra) questo codice:
Codice: Seleziona tutto
    Private Sub Workbook_Open()
    Call InvioemailAss
    Call InvioemailRevis
    End Sub


Se vuoi lanciare manualmente una macro:
-da Excel premi Alt-F8, selezion il nome della macro dall' elenco delle macro disponibili, premi Esegui.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17648
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Scandenziario via Mail":


Chi c’è in linea

Visitano il forum: Nessuno e 15 ospiti