Invio allert da file excel



  • Invio allert da file excel
    di Mik (utente non iscritto) data: 31/05/2017 12:18:13

    Ciao a tutti,
    la situazione da gestire è la seguente:
    Ho impostato un file excel dove riepilogo più scadenze alle quali devo effettuare delle comunicazioni.
    Il problema è che le scadenze non sono cicliche ma cambiano in base al cliente in questione.
    La mia richiesta per voi è: è possibile impostare il file in modo che in autonomia senza doverlo aprire all'accensione del pc nella data di interesse mi generi un allert o anche una mail per segnalarmi di dover fare la comunicazione? Stavo pensando se per caso fosse possibile collegare excel all'agenda del pc.
    Io giro con Excell 2003 ma come sistema operativo ho Windows 10 (non so se cambia qualcosa).



  • di alfrimpa data: 31/05/2017 14:37:10

    Ciao Mik

    In linea teorica la cosa sarebbe possibile ma il "percorso" è piuttosto articolato.

    Dovresti:

    1) Accendere il pc
    2) Pianificare nell'Esecuzione Automatica di Windows il lancio di Excel
    3) Inserire il tuo file nella directory XLSTART (se non c'è occorre crearla) in modo che al lancio di Excel venga aperto
    4) Inserire nel file una "particolare macro "Workbook_Open" che viene eseguita all'apertura del file stesso che fa il check dei dati ed eventualmente invia le mail.

    Alfredo





  • di mik (utente non iscritto) data: 31/05/2017 15:52:49

    Ciao Alfredo,

    innanzitutto grazie mille della veloce risposta; in ogni caso immaginavo fosse un qualcosa di un pò articolato e al momento non ho molto tempo per lavorarci su quindi farò alla vecchia maniera (post-it ).
    Se posso ne approfitto per chiederti un paio di dubbi che invece mi sono nati mentre riguardavo un altro Codice (che ti allego sotto). Ti dico subito che le parti con l'apostrofo le ho lasciate perchè a volte mi tornano utili se devo modificare qualcosa anche se so che magari nel complesso creano un pò di confusione... oltre a questo sto impazzendo perchè vorrei trasformare la stringa "cartella" in modo tale che si modifichi in base a quello che viene scritto in una cella. Per spiegarmi meglio vorrei fare un collegamento ipertestuale con alla base la formula concatena, che però non riesco a mettere giù in modo corretto (non essendo un asso in Vba ho provato a mettere giù il codice: Cartella= "C:UsersDesktopProva" & " " & " Range("A1").Value). Riesci ad aiutarmi?

    Ultima richiesta è una cavolata ma ogni volta che faccio partire la macro mi si disattiva il "Bloc Num", non so se è un baco di Excell 2003, ma c'è un codice per dire al programma di riattivarmi il tasto alla fine dell'esecuzione?

    Ovviamente grazie in anticipo per la disponibilità

     
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
      
      Cartella = "C:UsersDesktopprova"  'percorso completo su cui salvare
      NomeFile = Range("c4").Value  'cella da cui prendere il nome file
      NomeFoglio = "Client"        'nome esatto del foglio da copiare
      
      If NomeFile = "" Then Exit Sub
      If Right(NomeFile, 4) <> ".xls" Then NomeFile = NomeFile & ".xls"
         
      Sheets(NomeFoglio).Copy
       
      ActiveWorkbook.SaveAs Filename:=NomeFile, FileFormat:= _
        xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False
        
        Dim BodyMsg As String, Oggetto As String, Percorsofile As String
        BodyMsg = "Gentili colleghi," _
        & vbCrLf & "vi chiedo gentilmente l'invio della client, da compilare nei primi 9 punti." _
        & vbCrLf & "Vi informo che il processo di invio ed archiviazione è stato automatizzato e vi chiedo quindi di NON rinominare il file e di reinoltrare la client all'indirizzo mail esempio@gmail.it." _
        & vbCrLf & "Grazie e buon proseguimento." _
    
        Oggetto = "Richiesta compilazione Client"
        
        Dim inizio As Integer
        Dim fine As Integer
        Dim i As Integer
        Dim colIndirizzo As Integer
        Dim colPercorsoFile As Integer
        Dim colOggetto As Integer
        
        'inizio = Worksheets ("cdc mail"). Cells ( , )
        'fine = Worksheets ("cdc mail"). Cells ( , )
        'colIndirizzo = Worksheets("cdc mail").Cells(57, 2)
        'colPercorsoFile = Worksheets("cdc mail").Cells(58, 2)
        'colOggetto = Worksheets ("cdc mail"). Cells ( , )
    
        'For i = inizio To fine
        Indirizzo = Worksheets("cdc mail").Cells(57, 2)
        IndirizzoCC = Worksheets("cdc mail").Cells(57, 4)
        Percorsofile = Worksheets("cdc mail").Cells(58, 2)
        'Oggetto = Worksheets("cdc mail").Cells( , )
    
    
    If Indirizzo <> "" Then
        Shell "C:Program Files (x86)Mozilla Thunderbird	hunderbird -compose " _
        & Chr$(34) & "to='" & Indirizzo & "',cc='" & IndirizzoCC & "',subject='" & Oggetto & "',body='" & BodyMsg _
        & "',attachment='" & Percorsofile & "'" & Chr$(34), vbNormalFocus
        Application.Wait Now + TimeValue("00:00:03")
        SendKeys "^{ENTER}"
    
    End If
        
        Indirizzo = ""
        Percorsofile = ""
        'Next i
    
    ActiveWorkbook.Close savechanges:=False
    Application.Quit
    
    End Sub
    



  • di alfrimpa data: 31/05/2017 17:20:31

    Così a naso dovrebbe essere

    "C:UsersDesktopProva" & Range("A1").Value

    oppure

    percorso = "C:UsersDesktopProva"

    nomefile = Range("A1").Value

    cartella = percorso & nomefile

    Alfredo





  • di mik (utente non iscritto) data: 01/06/2017 14:34:21

    Alfredo grazie mille davvero mi hai risolto non pochi problemi!!!!!
    Condivido qui di seguito il codice finale e FUNZIONANTE così chiunque può prenderne spunto per il proprio lavoro... Grazie ancora
     
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
      
      PercorsoGenerico = "C:UsersDesktopprova"  'percorso completo su cui salvare
      NomeCdc = Range("H2").Value
      PercorsoSpecifico = PercorsoGenerico & NomeCdc & ""
      NomeFile = Range("c4").Value  'cella da cui prendere il nome file
      NomeFoglio = "Client"        'nome esatto del foglio da copiare
      
      If NomeFile = "" Then Exit Sub
      If Right(NomeFile, 4) <> ".xls" Then NomeFile = NomeFile & ".xls"
         
      Sheets(NomeFoglio).Copy
       
      ActiveWorkbook.SaveAs Filename:=PercorsoSpecifico & NomeFile, FileFormat:= _
        xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False
        
        Dim BodyMsg As String, Oggetto As String, Percorsofile As String
        
        BodyMsg = "Gentili colleghi," _
        & vbCrLf & "vi chiedo gentilmente l'invio della client, da compilare nei primi 9 punti."U _
        & vbCrLf & "Vi informo che il processo di invio ed archiviazione è stato automatizzato e vi chiedo quindi di NON rinominare il file e di reinoltrare la client all'indirizzo mail esempio@gmail.it." _
        & vbCrLf & "Grazie e buon proseguimento." _
    
        Oggetto = "Richiesta compilazione Client"
        
        Dim inizio As Integer
        Dim fine As Integer
        Dim i As Integer
        Dim colIndirizzo As Integer
        Dim colPercorsoFile As Integer
        Dim colOggetto As Integer
        
        'inizio = Worksheets ("cdc mail"). Cells ( , )
        'fine = Worksheets ("cdc mail"). Cells ( , )
        'colIndirizzo = Worksheets("cdc mail").Cells(57, 2)
        'colPercorsoFile = Worksheets("cdc mail").Cells(58, 2)
        'colOggetto = Worksheets ("cdc mail"). Cells ( , )
    
        'For i = inizio To fine
        Indirizzo = Worksheets("cdc mail").Cells(58, 2)
        IndirizzoCC = Worksheets("cdc mail").Cells(58, 4)
        Percorsofile = Worksheets("cdc mail").Cells(59, 2)
        'Oggetto = Worksheets("cdc mail").Cells( , )
    
    
    If Indirizzo <> "" Then
        Shell "C:Program Files (x86)Mozilla Thunderbird	hunderbird -compose " _
        & Chr$(34) & "to='" & Indirizzo & "',cc='" & IndirizzoCC & "',subject='" & Oggetto & "',body='" & BodyMsg _
        & "',attachment='" & Percorsofile & "'" & Chr$(34), vbNormalFocus
        Application.Wait Now + TimeValue("00:00:03")
        SendKeys "^{ENTER}"
    
    End If
        
        Indirizzo = ""
        Percorsofile = ""
        'Next i
    
    ActiveWorkbook.Close savechanges:=False
    Application.Quit
    
    End Sub