Eseguisce una macro à tempu

Un casu assai cumuni in a pratica: avete bisognu di eseguisce unu o più di i vostri macros à un tempu determinatu o à una certa freccia. Per esempiu, avete un rapportu grande è pisanti chì aghjurnà una meza ora è vulete eseguisce l'aghjurnamentu una meza ora prima di ghjunghje à u travagliu in a matina. O avete una macro chì deve automaticamente mandà email à l'impiegati à una freccia specifica. O, quandu u travagliu cù una PivotTable, vulete aghjurnà nantu à a mosca ogni 10 seconde, è cusì.

Fighjemu ciò chì Excel è Windows anu a capacità di implementà questu.

Eseguisce una macro à una certa frequenza

U modu più faciule per fà questu hè di utilizà u metudu VBA integratu Applicazione.OnTimeUn chì eseguisce a macro specificata à l'ora specificata. Capemu questu cun un esempiu praticu.

Aprite l'editore Visual Basic cù u buttone di u listessu nome nantu à a tabulazione documentaliste (Sviluppatore) o scorciatoia da tastiera Alt+F11, inserisci un novu modulu attraversu u menu Inserisce - Modulu è copià quì u codice seguente:

Dim TimeToRun 'variabile globale induve u prossimu tempu di esecuzione hè almacenatu' questu hè a macro principale Sub MyMacro() Application.Calculate 'ricalculate u libru Range("A1").Interior.ColorIndex = Int(Rnd() * 56) 'fill cell A1 cun un culore aleatoriu :) Chjamate NextRun 'eseguite a macro NextRun per stabilisce u prossimu tempu di esecuzione End Sub 'sta macro stabilisce l'ora per a prossima esecuzione di a macro principale Sub NextRun() TimeToRun = Now + TimeValue ("00: 00: 03") 'aghjunghje 3 seconde à l'ora attuale Application.OnTime TimeToRun, "MyMacro" 'schedule the next run End Sub 'macro to start the repeat sequence Sub Start() Call NextRun End Sub' macro to stop the repeat sequence. Sub Finish() Application.OnTime TimeToRun, "MyMacro", , False End Sub  

Scupritemu ciò chì hè quì.

Prima, avemu bisognu di una variàbile chì guardà u tempu di u prossimu run di a nostra macro - l'aghju chjamatu TimeToRun. Per piacè nutate chì u cuntenutu di sta variabile deve esse dispunibule per tutti i nostri macros sussegwenti, cusì avemu bisognu di fà. glubale, vale à dì dichjarà à u principiu di u modulu prima di u primu Sub.

Dopu vene a nostra macro principale MyMacro, chì farà u compitu principalu - per recalculate u libru cù u metudu Applicazione.Calculate. Per fà più chjaru, aghju aghjustatu a formula = TDATE () à u fogliu in a cellula A1, chì mostra a data è l'ora - quandu ricalculate, u so cuntenutu serà aghjurnatu ghjustu davanti à i nostri ochji (solu accende a visualizazione di seconde in a cellula). formatu). Per un divertimentu extra, aghju aghjustatu ancu à a macro u cumandimu per riempie a cellula A1 cun un culore selezziunatu aleatoriamente (u codice di culore hè un integer in a gamma 0..56, chì hè generata da a funzione. Rnd è arrotonda à una funzione intera Int).

Macro Next Run aghjunghje à u valore precedente TimeToRun 3 seconde più è poi pianificà a prossima corsa di a macro principale MyMacro per stu novu tempu. Di sicuru, in pràtica, pudete aduprà qualsiasi altri intervalli di tempu chì avete bisognu cù l'argumenti di a funzione TimeValue in u furmatu hh:mm:ss.

È infine, solu per comodità, sò state aghjunte più macros di lanciamentu di sequenza. Home è u so compiu Finisci. L'ultimu usa u quartu argumentu di u metudu per rompe a sequenza. In tempu uguali False.

Totale se eseguite a macro Home, allura stu carrusel sanu girarà, è vedemu a seguente stampa nantu à u fogliu:

Pudete piantà a sequenza eseguendu, rispettivamente, a macro Finisci. Per comodità, pudete assignà scurciate di tastiera à i dui macros usendu u cumandamentu Macros - Opzioni Insignia documentaliste (Sviluppatore - Macro - Opzioni).

Esecuzione di una macro in un calendariu

Di sicuru, tuttu ciò chì descrive sopra hè pussibule solu s'ellu avete Microsoft Excel in esecuzione è u nostru schedariu hè apertu in questu. Avà fighjemu un casu più cumplicatu: avete bisognu di eseguisce Excel secondu un calendariu determinatu, per esempiu, ogni ghjornu à 5:00, apre un rapportu grande è cumplessu in questu è aghjurnà tutte e cunnessione è e dumande in questu per esse. esse pronti per quandu ghjunghjemu à u travagliu 🙂

In una tale situazione, hè megliu aduprà Scheduler di Windows - un prugramma appositamente integratu in qualsiasi versione di Windows chì pò eseguisce azioni specificate nantu à un calendariu. In fatti, l'avete digià utilizatu senza sapè, perchè u vostru PC verifica regularmente l'aghjurnamenti, scaricate novi basa di dati antivirus, sincronizza i cartulare di nuvola, etc. Hè tuttu u travagliu di u Scheduler. Allora u nostru compitu hè di aghjunghje à i travaglii esistenti un altru chì lanciarà Excel è apre u schedariu specificatu in questu. È appenderemu a nostra macro nantu à l'avvenimentu Workbook_Open stu schedariu - è u prublema hè risolta.

Vogliu avvistà subitu chì u travagliu cù u Scheduler pò esse bisognu di diritti d'utilizatori avanzati, perchè se ùn pudete truvà micca i cumandamenti è e funzioni descritte quì sottu in u vostru urdinatore di travagliu in l'uffiziu, cuntattate i vostri specialisti IT per aiutu.

Lanciamentu di u Scheduler

Allora cuminciamu u Scheduler. Per fà questu, pudete sia:

  • Clicca dritta nant'à u buttone Start è sceglite Computer Management (Gestione di l'urdinatore)
  • Sceglite in u Pannellu di cuntrollu: Amministrazione - Task Scheduler (Pannello di cuntrollu - Strumenti amministrativi - Task Scheduler)
  • Sceglite da u menu principale Start - Accessori - Strumenti di sistema - Task Scheduler
  • Prestà lettore di teclica Win+R, entre taskschd.msc È stampa Rinsignate

The following window should appear on the screen (I have an English version, but you can also have a version):

Eseguisce una macro à tempu

Crea un compitu

Per creà un novu compitu cù un simplice assistente passu à passu, cliccate nantu à u ligame Crea un compitu simplice (Creà Task Basic) in u pannellu ghjustu.

À u primu passu di l'assistente, inserite u nome è a descrizzione di u compitu chì deve esse creatu:

Eseguisce una macro à tempu

Cliccate nantu à u buttone Next (Avanti) è in u prossimu passu selezziunà un trigger - a frequenza di lanciamentu o un avvenimentu chì lanciarà a nostra attività (per esempiu, accende l'urdinatore):

Eseguisce una macro à tempu

Sì avete sceltu Chissa (Ogni ghjornu), dopu in u passu prossimu vi tuccherà à selezziunà un tempu specifichi, data di iniziu di a sequenza è u passu (ogni ghjornu 2, 5 ghjornu, etc.):

Eseguisce una macro à tempu

U prossimu passu hè di sceglie un'azzione - Executà u prugramma (Inizià un prugramma):

Eseguisce una macro à tempu

È infine, u più interessante hè ciò chì esattamente deve esse apertu:

Eseguisce una macro à tempu

In u Prugramma o script (Programma/script) avete bisognu di entre in u percorsu à Microsoft Excel cum'è un prugramma, vale à dì direttamente à l'executable Excel. Nant'à diversi computers cù diverse versioni di Windows è Office, stu schedariu pò esse in diverse cartulari, per quessa, quì sò uni pochi di manere per scopre u so locu:

  • Cliccate cù u dirittu nantu à l'icona (scorciatoia) per lancià Excel nantu à u desktop o in a taskbar è selezziunate u cumandamentu tessuti (proprietà), è dopu in a finestra chì si apre, copià u percorsu da a linea destinazione:

    Eseguisce una macro à tempu                      Eseguisce una macro à tempu

  • Aprite ogni libru di Excel, dopu apre Task Manager (Task Manager) spingà Ctrl+Alt+From è clicchendu dirittu nantu à a linea Microsoft Excel, sceglite un cumandamentu tessuti (proprietà). In a finestra chì si apre, pudete copià u percorsu, senza scurdà di aghjunghje un backslash à questu è EXCEL.EXE à a fine:

    Eseguisce una macro à tempu              Eseguisce una macro à tempu

  • Apri Excel, apre l'editore Visual Basic cù scurciatoia di tastiera Alt+F11, pannellu apertu immediata una cumbinazione di Ctrl+G, entre u cumandamentu in questu:

    ? Applicazione.Path

    ... è cliccate nant'à Rinsignate

    Eseguisce una macro à tempu

    Copia u percorsu risultatu, senza scurdà di aghjunghje un backslash à questu è EXCEL.EXE à a fine.

In u Aghjustate argumenti (optional) (Aggiungi argumenti (opcional)) avete bisognu à inserisce u percorsu sanu à u libru cù a macro chì vulemu apre.

Quandu tuttu hè inseritu, dopu cliccate Next è dopu Finisci (finu). U compitu deve esse aghjuntu à a lista generale:

Eseguisce una macro à tempu

Hè cunvenutu per gestisce u compitu creatu cù i buttoni à a diritta. Quì pudete pruvà u compitu eseguendu immediatamente (corri)senza aspittà per u tempu specificatu. Pudete disattivà temporaneamente un compitu (Disattivà)in modu chì ferma di curriri per un periudu di tempu, cum'è e vostre vacanze. Ebbè, pudete sempre cambià i paràmetri (date, ora, nome di u schedariu) attraversu u buttone tessuti (proprietà).

Aghjunghjite una macro per apre un schedariu

Avà ferma à appiccà in u nostru libru u lanciamentu di a macro chì avemu bisognu nantu à l'avvenimentu apertu di u schedariu. Per fà questu, apre u libru è andate à l'editore Visual Basic utilizendu u scurciatu di tastiera Alt+F11 o i buttoni franese tecnicu Insignia documentaliste (Sviluppatore). In a finestra chì si apre in l'angulu superiore manca, avete bisognu di truvà u nostru schedariu nantu à l'arbulu è cliccate doppiu per apre u modulu. Stu libru (Questu libru di travagliu).

Se ùn vede micca sta finestra in l'editore Visual Basic, pudete apre u menù Vede - Project Explorer.

In a finestra di u modulu chì si apre, aghjunghje un gestore di l'eventi di libru apertu, selezziunate da i listini drop-down in cima Libru di travagliu и Open, rispettivamente:

Eseguisce una macro à tempu

Un mudellu di prucedura deve apparisce nantu à u screnu. Workbook_Open, induve trà e linii Sub privatu и End Sub è avete bisognu di inserisce quelli cumandamenti VBA chì deve esse eseguitu automaticamente quandu stu libru di travagliu Excel hè apertu, quandu u Scheduler l'apre secondu u schedariu. Eccu alcune opzioni utili per l'overclocking:

  • Stu Workbook.RefreshAll - Aggiorna tutte e dumande di dati esterni, e dumande di Power Query, è PivotTables. L'opzione più versatile. Solu ùn vi scurdate di permette e cunnessione à e dati esterni per automaticamente è aghjurnà ligami via File - Opzioni - Centru di fiducia - Opzioni di centru di fiducia - Cuntinutu esternu, altrimenti, quandu avete apertu u libru, un avvisu standard appariscerà è Excel, senza aghjurnà nunda, aspittà per a vostra benedizzione in a forma di cliccà nantu à u buttone. Habilita u cuntenutu (Attivà u cuntenutu):

    Eseguisce una macro à tempu

  • ActiveWorkbook.Connections ("Connection_Name"). Refresh - aghjurnà e dati nantu à a cunnessione Connection_Name.
  • Fogli ("Sheet5").PivotTables("PivotTable1«).PivotCache.Refresh - aghjurnà una sola tabella pivot chjamata PivotTable 1 nantu à u fogliu Fola5.
  • Applicazione.Calculate - ricalculazione di tutti i libri di travagliu Excel aperti.
  • Applicazione.CalculateFullRebuild - ricalculazione forzata di tutte e formule è ricustruzzione di tutte e dipendenze trà e cellule in tutti i libri di travagliu aperti (equivalente à rientra in tutte e formule).
  • Worksheets ("Rapportu"). PrintOut - stampa foglia Photos.
  • Chjamate MyMacro - eseguite una macro chjamata MyMacro.
  • Stu libru di travagliu. Salvà - salvà u libru attuale
  • ThisWorkbooks.Save As "D:ArchiveReport" & Sustituisci (Ora, ":", "- ") & ".xlsx" - salvà u libru in un cartulare D: archiviu sottu u nome Photos cù data è ora appiccicate à u nome.

Se vulete chì a macro sia eseguita solu quandu u schedariu hè apertu da u Scheduler à 5:00 am, è micca ogni volta chì l'utilizatore apre u libru di travagliu durante u ghjornu di travagliu, allora hè sensu per aghjunghje una verificazione di u tempu, per esempiu:

If Format (Ora, "hh:mm") = "05:00" Allora ThisWorkbook.RefreshAll  

Eccu tuttu. Ùn vi scurdate di salvà u vostru libru di travagliu in un furmatu macro-attivatu (xlsm o xlsb) è pudete chjude Excel in modu sicuru è andate in casa, lascendu u vostru urdinatore. À un mumentu determinatu (ancu s'ellu u PC hè chjusu), u Scheduler lanciarà Excel è apre u schedariu specificatu in questu, è a nostra macro realicerà l'azzioni programati. È vi luxuriate in u lettu mentre u vostru rapportu pisanti hè automaticamente ricalculatu - bellezza! 🙂

  • Chì sò i macros, cumu si usanu, induve inserisce u codice Visual Basic in Excel
  • Cumu creà u vostru propiu macro add-in per Excel
  • Cumu utilizà a Macro Personale Workbook cum'è una biblioteca per i vostri macros in Excel

Lascia un Audiolibro