Sviluppare funzionalita su Microsoft Office con VBA eseguire vba ogni venerdì alle 6 del mattino

Login Registrati
Stai vedendo 14 articoli - dal 1 a 14 (di 14 totali)
  • Autore
    Articoli
  • #34091 Score: 0 | Risposta

    marco_budin
    Partecipante
      2 pts

      buongiorno a tutti!

      volevo creare una VBA che mi permetta di eseguirla ogni venerdì dalle ore 6, una volta sola al momento che si apre il file. Nel senso, la macro si deve attivare da quell'ora e a quel giorno al momento dell'apertura.

      Praticamente quando si apre il file, cancellerà i dati presenti nelle colonne indicate nella macro. Poi una volta cancellate, non dovrà più cancellarle fino al venerdì successivo dalle ore 6.00.

      ho provato a scrivere un codice, ma non funziona. vi allego il file.

      spero che qualcuno possa aiutarmi.

      saluti e a presto

      Marco

       

      Allegati:
      You must be logged in to view attached files.
      #34093 Score: 0 | Risposta

      Oscar
      Partecipante
        45 pts

        Prova così  per cancellare 

        ma poi se vuoi farlo solo una volta serve una variabile  che registri che è già stato eliminato

        `Sub controlla()
        If Weekday(Now) = 6 And Time > ("06:00:00") Then cancella
        End Sub`
        #34094 Score: 0 | Risposta

        patel
        Moderatore
          51 pts

          Il file lo apri tu o si deve aprire da solo ? nel secondo caso il vba non ti può aiutare, devi farlo dal sistema operativo.

          #34096 Score: 0 | Risposta

          marco_budin
          Partecipante
            2 pts

            Ciao Patel, lo aprirei io il file. Ma non sarei regolare. Potrei aprilo all orario impostato, come un giorno dopo. Dovrebbe ricordare che quel giorno deve cancellare quelle colonne. Ma solo una volta.

            Grazie Oscar per la tua risposta. Cosi mi eliminerebbe sempre dopo le 6, ma non ricorderebbe che lo ha gia fatto.

            Vi ringrazio per le vostre risposte.

             

            #34103 Score: 0 | Risposta

            Oscar
            Partecipante
              45 pts

              marco_budin ha scritto:

              Ciao Patel, lo aprirei io il file. Ma non sarei regolare. Potrei aprilo all orario impostato, come un giorno dopo. Dovrebbe ricordare che quel giorno deve cancellare quelle colonne. Ma solo una volta.

              Se la vuoi eliminare anche il giorno dopo devi mettere   >=6 

              Per eliminarlo una sola volta si può registrare la data di eliminazione in una cella libera , in modo che se trova la data di eliminazione non esegue la macro cancella 

              Poi da (Questa cartella di lavoro ) in automatico elimini la data il venerdì successivo   

               

              Vedi la modifica la data viene registrata nel foglio  "FattBody" K2

              La data viene eliminata il giorno successivo , ma prima del venerdi successivo non elimina più nulla 

              Nell'eliminazione della data devi mettere +1  come sotto  altrimenti il giorno dopo elimina tutto 

               

              Private Sub Workbook_Open()
              If Date + 1 > Foglio16.Range("K2") Then Foglio16.Range("K2") = ""
              Call controlla
              End Sub

               

              Allegati:
              You must be logged in to view attached files.
              #34105 Score: 0 | Risposta

              Oscar
              Partecipante
                45 pts

                Prova anche questa prova

                Che poi nella prima prova è -1 che devi mettere non +1 , ho sbagliato io

                Private Sub Workbook_Open()
                If Date - 1 > Foglio16.Range("K2") Then Foglio16.Range("K2") = ""
                Call controlla
                End Sub

                 

                Allegati:
                You must be logged in to view attached files.
                #34107 Score: 0 | Risposta

                marco_budin
                Partecipante
                  2 pts

                  Ciao Oscar, ti ringrazio moltissimo per il tempo che mi hai dedicato a questo codice e a darmi una mano. 

                  La data che inserisce nella cella K2, la mette in automatico la macro? o devo inserirla io? Lui metterà poi in automatico la data del venerdì, cancellando così solamente una volta e non tutte le volte giusto?

                  diventa tutto automatico.

                  saluti e grazie

                  Marco

                   

                  #34110 Score: 0 | Risposta

                  Oscar
                  Partecipante
                    45 pts

                    marco_budin ha scritto:

                    Ciao Oscar, ti ringrazio moltissimo per il tempo che mi hai dedicato a questo codice e a darmi una mano. 

                    La data che inserisce nella cella K2, la mette in automatico la macro? o devo inserirla io? Lui metterà poi in automatico la data del venerdì, cancellando così solamente una volta e non tutte le volte giusto?

                    diventa tutto automatico.

                    saluti e grazie

                    Marco

                    La data la mette in automatico quando si cancella al venerdì o il sabato , tu non devi fare nulla

                    Una volta cancellato mette la nuova data e non cancella più niente fino al venerdì successivo

                    #34111 Score: 0 | Risposta

                    Raffaele53
                    Partecipante
                      22 pts

                      Ciao a tutti
                      Sul mio PC (Domenica ore 22:15), MsgBox Weekday(Date) risponde 1=Lun
                      Con Weekday(Date, vbUseSystemDayOfWeek) risponde 7=Dom

                      Concordo con Oscar, bisogna scrivere una data da qualche parte=K2 . Forse (non sono certo) sarebbe meglio mettere la data della prossima esecuzione? Solo da provare...

                      Private Sub Workbook_Open()
                          If Now > Sheets("FattBody").Range("K2") Then
                              Call cancella
                          Else
                              DData = Sheets("FattBody").Range("K2")
                              Application.OnTime DData, "cancella"
                          End If
                      End Sub
                      '---------------
                      Public DData As Date
                      Sub cancella()
                          Sheets("FattBody").Columns("C:C").ClearContents
                          Sheets("FattNeuro").Columns("C:C").ClearContents
                          Sheets("FattSpinale").Columns("C:C").ClearContents
                      If Weekday(Date, vbUseSystemDayOfWeek) = 1 Then DData = Date + 4
                      If Weekday(Date, vbUseSystemDayOfWeek) = 2 Then DData = Date + 3
                      If Weekday(Date, vbUseSystemDayOfWeek) = 3 Then DData = Date + 2
                      If Weekday(Date, vbUseSystemDayOfWeek) = 4 Then DData = Date + 1
                      If Weekday(Date, vbUseSystemDayOfWeek) = 5 Then DData = Date + 7
                      If Weekday(Date, vbUseSystemDayOfWeek) = 6 Then DData = Date + 6
                      If Weekday(Date, vbUseSystemDayOfWeek) = 7 Then DData = Date + 5
                          Sheets("FattBody").Range("K2") = DData + TimeValue("06:00:00")
                      End Sub
                      #34115 Score: 0 | Risposta

                      Oscar
                      Partecipante
                        45 pts

                        Raffaele53 ha scritto:

                        Sul mio PC (Domenica ore 22:15), MsgBox Weekday(Date) risponde 1=Lun Con Weekday(Date, vbUseSystemDayOfWeek) risponde 7=Dom

                        Ciao Raffaele

                        Certo anche il mio , ma non devi mettere  Weekday(Date) 

                        devi mettere Weekday(Now) 

                         

                        Che poi non capisco il perchè in realtà ci dovrebbe andare  Weekday(Date) 

                        #34116 Score: 0 | Risposta

                        marco_budin
                        Partecipante
                          2 pts

                          Ciao Raffaele53/Oscar,

                          grazie mille per le vostre preziose risposte. quindi il codice di Raffaele53 dovrebbe essere così:

                          If Weekday(Now, vbUseSystemDayOfWeek) = 1 Then DData = Date + 4

                          il "now" andrebbe solo nalla prima parte. Nel secondo +4 no. giusto? o anche Now + 4?

                          provo entrambi i codici e settimana prossima vi farò sapere se ha funzionato (ora devo aspettare fino a venerdì   ).

                          vi ringrazio molto e vi auguro una buona giornata!

                          Marco

                          #34121 Score: 0 | Risposta

                          Raffaele53
                          Partecipante
                            22 pts

                            Io lascerei >>>If Weekday(Date, vbUseSystemDayOfWeek)

                            Mi rimane un "dubbio"..., se nel caso il PC rimanesse accesso per più settimane?

                            Scusatemi mi è venuto in mente un'altro "dubbio"..., appena riesco Vi aggiorno

                            #34126 Score: 0 | Risposta

                            Raffaele53
                            Partecipante
                              22 pts

                              Personalmente proverei con Workbook_Open() + questa

                              Public DData As Date
                              Sub cancella()
                                  Sheets("FattBody").Columns("C:C").ClearContents
                                  Sheets("FattNeuro").Columns("C:C").ClearContents
                                  Sheets("FattSpinale").Columns("C:C").ClearContents
                              If Weekday(Date, vbUseSystemDayOfWeek) = 1 Then DData = Date + 4
                              If Weekday(Date, vbUseSystemDayOfWeek) = 2 Then DData = Date + 3
                              If Weekday(Date, vbUseSystemDayOfWeek) = 3 Then DData = Date + 2
                              If Weekday(Date, vbUseSystemDayOfWeek) = 4 Then DData = Date + 1
                              If Weekday(Date, vbUseSystemDayOfWeek) = 5 Then
                                  If Time < TimeValue("06:00:00") Then
                                      DData = Date + 0
                                  Else
                                      DData = Date + 7
                                  End If
                              End If
                              If Weekday(Date, vbUseSystemDayOfWeek) = 6 Then DData = Date + 6
                              If Weekday(Date, vbUseSystemDayOfWeek) = 7 Then DData = Date + 5
                                  Sheets("FattBody").Range("K2") = DData + TimeValue("06:00:00")
                                  DData = Sheets("FattBody").Range("K2")
                                  Application.OnTime DData, "cancella"
                              End Sub

                               

                               

                               

                              #34171 Score: 0 | Risposta

                              marco_budin
                              Partecipante
                                2 pts

                                ciao a tutti,

                                ho potuto verificare il file venerdì e tutto ha funzionato alla perfezione. Ha registrato tutta la settimana, e venerdì ha azzerato cancellando i dati.

                                vi ringrazio molto dell'aiuto che mi avete date, e vi auguro una buona giornata!

                                a presto

                                Marco

                              Login Registrati
                              Stai vedendo 14 articoli - dal 1 a 14 (di 14 totali)
                              Rispondi a: eseguire vba ogni venerdì alle 6 del mattino
                              Gli allegati sono permessi solo ad utenti REGISTRATI
                              Le tue informazioni: