Condividi:        

HELP!!! Macro excel

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

HELP!!! Macro excel

Postdi Paolo68 » 02/12/19 15:09

Buonasera a tutti, sono appena iscritto dopo aver visionato decine di messaggi in questo forum ma non essendo un programmatore non sono riuscito, anche armandomi di buona volontà, a ottenere la macro desiderata.
Se qualcuno potesse darmi una mano gliene sarei enormemente grato.
Spiego rapidamente quello di cui avrei bisogno:
nel file excel allegato http://www.filedropper.com/comxzeste nella colonna Scadenza RdO (gg ritardo al) è riportata la data di scadenza della richiesta e i giorni passati o mancanti (in giallo sono i gg già passati dalla data di scadenza della richiesta alla data odierna mentre le altre colonne riportano i gg che mancano alla data odierna).
Avrei bisogno che all'avverarsi della condizione per la quale siano già passati i gg venga inviata una mail al sottoscritto (ovviamente all'apertura del file) con un messaggio di Alert e le indicazioni della colonna TEMA, DATA di Scadenza RdO e di quanti gg siano già passati dalla scadenza.
La stessa cosa dovrebbe avvenire per quelle richieste la cui data di scadenza si sta avvicinando dandomi un preavviso di 15 gg e ricordandomelo ogni giorno fino alla scadenza.
Sarebbe utilissimo che la mail sia unica (non tante mail quante sono le richieste) ovvero riporti sia le richieste in scadenza sia quelle prossime alla scadenza e che venga spedita solamente una volta dal primo che apre questo file.
So perfettamente che questo forum non è un sito di creazioni macro gratuite ma non avendo trovato quello che mi serviva anche solo per provare a farmelo da solo mi sono arreso e vi chiedo aiuto.
Spero di poter imparare da questa macro che magari poi proverò a gestire da solo per gli usi futuri
Grazie
Paolo68
Newbie
 
Post: 2
Iscritto il: 02/12/19 12:45

Sponsor
 

Re: HELP!!! Macro excel

Postdi Anthony47 » 02/12/19 16:18

Intanto Benvenuto nel forum...

In attesa di avere tempo per guardare il tuo file, dai tu una occhiata a questa discussione: viewtopic.php?f=26&t=105254
Il tracciato dei dati dell'utente e' illustrato in questa immagine:
Immagine
Ma credo che il codice sia abbastanza chiaro :D da poter essere facilmente adattato al altri formati

Ci sentiamo presto...
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: HELP!!! Macro excel

Postdi Paolo68 » 02/12/19 16:49

Avevo già letto questa discussione ma non conoscendo assolutamente VBA ho chiesto aiuto in modo più diretto.
Se puoi aiutarmi relativamente al mio file te ne sarei grato.
Grazie
Paolo68
Newbie
 
Post: 2
Iscritto il: 02/12/19 12:45

Re: HELP!!! Macro excel

Postdi Anthony47 » 04/12/19 00:08

Lavorando sul tuo layout e sul codice che ti avevo segnalato ho prodotto questa macro:
Codice: Seleziona tutto
Sub Invioemail33BB()
'Vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=110944
Dim OutApp As Object, OutMail As Object
Dim EmailAddr As String, Subj As String
Dim cScad As String, cFree As String, wDays As Long
Dim BDT As String, I As Long, myCnt As Long, Elenco, FogliO           'FIN QUI E' SONO "DICHIARAZIONI"
'  (a)
'Parametri
cScad = "G"                                 '<<< La colonna con le date di Scadenza
cFree = "AA"                                '<<< Una colonna LIBERA
wDays = 11                                   '<<< I giorni di preavviso desiderati
'
Elenco = Array("Attive")                     '<<< L'elenco dei fogli in cui cercare
'
BDT = "Elenco Scadenze al " & Format(Date, "yyyy-mmm-dd") & vbCrLf
For Each FogliO In Elenco
BDT = BDT & vbCrLf & "SCADENZE DAL FOGLIO " & FogliO                '***
    Sheets(FogliO).Select
'compilazione del testo della mail
    For I = 3 To Cells(Rows.Count, cScad).End(xlUp).Row
        If IsDate(Cells(I, cScad).Value) Then
            If Cells(I, cScad) <= (Date + wDays) And Date > Cells(I, cFree) + 7 Then
                BDT = BDT & vbCrLf & Cells(I, "B") & " / RdO:" & Cells(I, "E") & " / " & "Scadenza: " & _
                    Format(Cells(I, cScad), "dd-mmm-yyyy") & " / GG Mancati: " & Cells(I, "H") * (-1)        '***
'                Cells(I, cFree).Value = Date                   '??? Risollecito? Vedi Testo
                myCnt = myCnt + 1
            End If
        End If
    Next I
Next FogliO
'Si completa il testo della mail:
BDT = BDT & vbCrLf & "Cordiali saluti" & vbCrLf                     '***
BDT = BDT & "La tua macro"                                          '***
''  (b)
If myCnt = 0 Then
    MsgBox ("Nessuna scadenza da segnalare")
    Exit Sub                              'Nessuna scadenza, si termina senza azioni
End If
'
'DA QUI SI CREA E INVIA LA MAIL:
Set OutApp = CreateObject("Outlook.Application")
EmailAddr = "account@dominio.it"                        '<<< 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    ' .Display per "visualizzare" la mail; .send per "Inviare automaticamente"
'    .send      ' Alternativa a .Display
    Beep
End With
MsgBox ("Preparata email con " & myCnt & " scadenze")
Application.Wait (Now + TimeValue("0:00:02"))
'  (c)
Set OutMail = Nothing
'  (d)
Set OutApp = Nothing
'
End Sub

Va messa all'interno di un "Modulo standard" del tuo vba (vedi viewtopic.php?f=26&t=103893&p=647675#p647675)
Le righe marcate >>> vanno personalizzate come da commento; quelle marcate *** contengono parti del testo della mail che possono essere personalizzate a piacere.
Il codice e' predisposto per creare la mail e visualizzarla pronta per essere spedita, ma a mano; tuttavia eliminando la riga ".Display" e togliendo l' Apostrofo in testa alla riga ".send" si puo' fare in modo che la mail venga spedita direttamente (seguendo le regole di spedizione impostate in Outlook)

Lanciandola, la Sub Invioemail33BB controlla sul foglio "Attive" le scadenze registrate, e per quelle dove i giorni alla scadenza sono inferiori a quanto impostato (o se sono gia' scadute) compila una riga di mail.
La macro continuera' a inviare tutte le scadenze, anche quelle gia' segnalate; se invece si volesse inserire una sospensione alle notifiche, allora si puo' togliere l'apostrofo in testa all'istruzione marcata "??? Risollecito?"; in questo caso allora la data di invio del promemoria di scadenza e' registrata in colonna AA e per i prossimi 7 gg la notifica e' sospesa, per quella riga.

Per avviare la macro, vedi le istruzioni qui: viewtopic.php?f=26&t=103893&p=647678#p647678
Se vuoi fare in modo che la verifica venga fatta automaticamente all'apertura del file, allora devi aggiungere questo codice all'interno del "Modulo di Classe" QuestaCartellaDiLavoro (vedi viewtopic.php?f=26&t=103893&p=647675#p647675)
Codice: Seleziona tutto
Private Sub Workbook_Open()
    Call Invioemail33BB
End Sub

Prova e fai sapere…

PS: hai un messaggio privato
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "HELP!!! Macro excel":


Chi c’è in linea

Visitano il forum: Nessuno e 31 ospiti