Begin 'n makro betyds

'n Baie algemene geval in die praktyk: jy moet een of meer van jou makro's op 'n gegewe tyd of op 'n sekere frekwensie laat loop. Byvoorbeeld, jy het 'n groot en swaar verslag wat 'n halfuur bywerk en jy wil graag die opdatering 'n halfuur laat loop voordat jy soggens by die werk aankom. Of jy het 'n makro wat outomaties e-posse aan werknemers moet uitstuur teen 'n bepaalde frekwensie. Of, wanneer jy met 'n draaitabel werk, wil jy hê dit moet elke 10 sekondes dadelik opdateer, ensovoorts.

Kom ons kyk na wat Excel en Windows die vermoë het om dit te implementeer.

Om 'n makro teen 'n gegewe frekwensie te laat loop

Die maklikste manier om dit te doen is om die ingeboude VBA-metode te gebruik Toepassing.Bytyd'n wat die gespesifiseerde makro op die gespesifiseerde tyd laat loop. Kom ons verstaan ​​dit met 'n praktiese voorbeeld.

Maak die Visual Basic-redigeerder oop met die knoppie met dieselfde naam op die blad ontwikkelaar (Ontwikkelaar) of sleutelbordkortpad alt+F11, voeg 'n nuwe module deur die spyskaart in Voeg in – Module en kopieer die volgende kode daarheen:

Dim TimeToRun 'globale veranderlike waar die volgende looptyd gestoor word 'dit is die hoofmakro Sub MyMacro() Application.Calculate 'herbereken die boek Range("A1"). Interior.ColorIndex = Int(Rnd() * 56) 'fill sel A1 met 'n ewekansige kleur :) Roep NextRun 'hardloop die NextRun makro om die volgende looptyd te stel End Sub 'hierdie makro stel die tyd vir die volgende lopie van die hoofmakro Sub NextRun() TimeToRun = Now + TimeValue("00: 00:03") 'voeg 3 sekondes by die huidige tyd Application.OnTime TimeToRun, "MyMacro" 'skeduleer die volgende lopie End Sub 'makro om die herhaling volgorde te begin Sub Start() Bel NextRun End Sub 'makro om die herhaling volgorde te stop Sub Finish() Application.OnTime TimeToRun, "MyMacro", , False End Sub  

Kom ons vind uit wat is wat hier.

Eerstens het ons 'n veranderlike nodig wat die tyd van die volgende lopie van ons makro sal stoor - ek het dit genoem TimeToRun. Neem asseblief kennis dat die inhoud van hierdie veranderlike beskikbaar moet wees vir al ons daaropvolgende makro's, so ons moet dit maak globale, maw verklaar heel aan die begin van die module voor die eerste sub.

Volgende kom ons hoofmakro MyMakro, wat die hooftaak sal verrig – om die boek te herbereken met behulp van die metode Toepassing.Bereken. Om dit duideliker te maak, het ek die formule =TDATE() by die blad in sel A1 gevoeg, wat die datum en tyd vertoon – wanneer dit herbereken word, sal die inhoud daarvan reg voor ons oë opgedateer word (skakel net die vertoning van sekondes in die sel aan formaat). Vir ekstra pret het ek ook die opdrag by die makro gevoeg om sel A1 te vul met 'n lukraak geselekteerde kleur (die kleurkode is 'n heelgetal in die reeks 0..56, wat deur die funksie gegenereer word rdte en rond af na 'n heelgetalfunksie Int).

Makro Volgende Hardloop voeg by die vorige waarde TimeToRun nog 3 sekondes en skeduleer dan die volgende lopie van die hoofmakro MyMakro vir hierdie nuwe tyd. Natuurlik, in die praktyk, kan jy enige ander tydsintervalle gebruik wat jy nodig het deur die funksie-argumente op te stel Tydwaarde in die formaat uu:mm:ss.

En laastens, net vir gerief, is meer volgorde bekendstellingsmakro's bygevoeg. What is This en die voltooiing daarvan Voltooi. Die laaste een gebruik die vierde metode-argument om die ry te breek. Op die tyd gelyke Vals.

Totaal as jy die makro hardloop What is This, dan sal hierdie hele karrousel draai, en ons sal die volgende prentjie op die blad sien:

Jy kan die volgorde stop deur onderskeidelik die makro uit te voer Voltooi. Vir gerief kan u sleutelbordkortpaaie aan beide makro's toewys deur die opdrag te gebruik Makro's - Opsies tab ontwikkelaar (Ontwikkelaar - Makro's - Opsies).

Begin 'n makro volgens 'n skedule

Alles wat hierbo beskryf word, is natuurlik slegs moontlik as u Microsoft Excel het en ons lêer daarin oop is. Kom ons kyk nou na 'n meer ingewikkelde saak: jy moet Excel volgens 'n gegewe skedule laat loop, byvoorbeeld elke dag om 5:00, 'n groot en komplekse verslag daarin oopmaak en alle verbindings en navrae daarin opdateer sodat dit wees gereed teen die tyd dat ons by die werk aankom 🙂

In so 'n situasie is dit beter om te gebruik Windows skeduleerder – 'n program wat spesiaal in enige weergawe van Windows ingebou is wat gespesifiseerde aksies op 'n skedule kan uitvoer. Trouens, jy gebruik dit reeds sonder om dit te weet, want jou rekenaar kyk gereeld vir opdaterings, laai nuwe anti-virus databasisse af, sinchroniseer wolkvouers, ens. Dit is alles die werk van die skeduleerder. Ons taak is dus om nog een by die bestaande take te voeg wat Excel sal begin en die gespesifiseerde lêer daarin sal oopmaak. En ons sal ons makro op die geleentheid hang Werkboek_Oop hierdie lêer – en die probleem is opgelos.

Ek wil jou dadelik waarsku dat werk met die skeduleerder gevorderde gebruikersregte kan vereis, so as jy nie die opdragte en funksies wat hieronder beskryf word op jou werkrekenaar in die kantoor kan vind nie, kontak jou IT-spesialiste vir hulp.

Begin die skeduleerder

Laat ons dus die skeduleerder begin. Om dit te doen, kan jy óf:

  • Regskliek op die knoppie begin en kies Rekenaarbestuur (Rekenaarbestuur)
  • Kies in die beheerpaneel: Administrasie – Taakskeduleerder (Beheerpaneel - Administratiewe gereedskap - Taakskeduleerder)
  • Kies uit die hoofkieslys Begin – Bykomstighede – Stelselnutsmiddels – Taakskeduleerder
  • Druk sleutelbordkortpaaie Wen+R, voer in takenchd.msc en druk Tik

Die volgende venster moet op die skerm verskyn (ek het 'n Engelse weergawe, maar jy kan ook 'n weergawe hê):

Begin 'n makro betyds

Skep 'n taak

Om 'n nuwe taak te skep deur 'n eenvoudige stap-vir-stap towenaar te gebruik, klik op die skakel Skep 'n eenvoudige taak (Skep basiese taak) in die regte paneel.

By die eerste stap van die towenaar, voer die naam en beskrywing van die taak in wat geskep moet word:

Begin 'n makro betyds

Klik op die knoppie volgende (Volgende) en in die volgende stap kies ons 'n sneller - die bekendstellingsfrekwensie of 'n gebeurtenis wat ons taak sal begin (byvoorbeeld om die rekenaar aan te skakel):

Begin 'n makro betyds

As u verkies Daaglikse (Daagliks), dan sal jy in die volgende stap 'n spesifieke tyd, begindatum van die volgorde en stap moet kies (elke 2de dag, 5de dag, ens.):

Begin 'n makro betyds

Die volgende stap is om 'n aksie te kies - Begin die program (Begin 'n program):

Begin 'n makro betyds

En laastens, die interessantste ding is wat presies oopgemaak moet word:

Begin 'n makro betyds

In die Program of draaiboek (Program/skrif) jy moet die pad na Microsoft Excel as 'n program invoer, dit wil sê direk na die Excel-uitvoerbare. Op verskillende rekenaars met verskillende weergawes van Windows en Office kan hierdie lêer in verskillende vouers wees, so hier is 'n paar maniere waarop jy die ligging kan uitvind:

  • Regskliek op die ikoon (kortpad) om Excel op die lessenaar of in die taakbalk te begin en kies die opdrag Materiale (Eienskappe), en dan in die venster wat oopmaak, kopieer die pad vanaf die lyn Doel:

    Begin 'n makro betyds                      Begin 'n makro betyds

  • Maak enige Excel-werkboek oop en maak dan oop Task Manager (Taak bestuurder) stoot Ctrl+alt+Van en deur regs te klik op die lyn Microsoft Excel, kies 'n opdrag Materiale (Eienskappe). In die venster wat oopmaak, kan jy die pad kopieer, nie vergeet om 'n terugskuinsstreep daarby te voeg en EXCEL.EXE aan die einde nie:

    Begin 'n makro betyds              Begin 'n makro betyds

  • Maak Excel oop, maak Visual Basic-redigeerder oop met sleutelbordkortpad alt+F11, oop paneel Onmiddellike 'n kombinasie van Ctrl+G, voer die opdrag daarin in:

    ? Toepassing.Pad

    … en klik op Tik

    Begin 'n makro betyds

    Kopieer die gevolglike pad, nie vergeet om 'n terugskuinsstreep daarby te voeg en EXCEL.EXE aan die einde nie.

In die Voeg argumente by (opsioneel) (Voeg argumente by (opsioneel)) jy moet die volledige pad na die boek invoeg met die makro wat ons wil oopmaak.

Wanneer alles ingevoer is, klik dan volgende en dan Voltooi (Voltooi). Die taak moet by die algemene lys gevoeg word:

Begin 'n makro betyds

Dit is gerieflik om die geskepte taak te bestuur met die knoppies aan die regterkant. Hier kan jy die taak toets deur dit dadelik uit te voer (hardloop)sonder om vir die gespesifiseerde tyd te wag. Jy kan 'n taak tydelik deaktiveer (Deaktiveer)sodat dit vir 'n tydperk ophou loop, soos jou vakansie. Wel, jy kan altyd die parameters (datums, tyd, lêernaam) deur die knoppie verander Materiale (Eienskappe).

Voeg 'n makro by om 'n lêer oop te maak

Nou bly dit om die bekendstelling van die makro wat ons nodig het op die lêer oop-geleentheid in ons boek te hang. Om dit te doen, maak die boek oop en gaan na die Visual Basic-redigeerder met die sleutelbordkortpad alt+F11 of knoppies Visual Basic tab ontwikkelaar (Ontwikkelaar). In die venster wat in die boonste linkerhoek oopmaak, moet jy ons lêer op die boom vind en dubbelklik om die module oop te maak Hierdie boek (Hierdie Werkboek).

As jy nie hierdie venster in die Visual Basic-redigeerder sien nie, kan jy dit deur die kieslys oopmaak Bekyk - Project Explorer.

In die modulevenster wat oopmaak, voeg 'n boek oop gebeurtenis hanteerder by deur dit uit die aftreklyste aan die bokant te kies werkboek и Opening, onderskeidelik:

Begin 'n makro betyds

'n Proseduresjabloon moet op die skerm verskyn. Werkboek_Oop, waar tussen die lyne Privaat Sub и End Sub en jy moet daardie VBA-opdragte invoeg wat outomaties uitgevoer moet word wanneer hierdie Excel-werkboek oopgemaak word, wanneer die skeduleerder dit volgens die skedule oopmaak. Hier is 'n paar nuttige opsies vir oorklokkering:

  • Hierdie werkboek. Herlaai alles - Verfris alle eksterne data-navrae, Power Query-navrae en draaitabelle. Die mees veelsydige opsie. Moet net nie vergeet om verbindings met eksterne data by verstek toe te laat en skakels op te dateer via Lêer – Opsies – Trustsentrum – Trustsentrumopsies – Eksterne inhoud, anders, wanneer jy die boek oopmaak, sal 'n standaard waarskuwing verskyn en Excel, sonder om iets op te dateer, sal wag vir jou seën in die vorm van klik op die knoppie Aktiveer inhoud (Aktiveer inhoud):

    Begin 'n makro betyds

  • ActiveWorkbook.Connections(“Connection_Name”).Verfris — opdatering van data op die Connection_Name-verbinding.
  • Blaaie(“Sheet5“).Draaitafels(“Draaitabel1«).PivotCache.Verfris – opdatering van 'n enkele spiltabel met die naam Spiltabel 1 op die blad Sheet5.
  • Toepassing.Bereken – herberekening van alle oop Excel-werkboeke.
  • Application.CalculateFullRebuild – gedwonge herberekening van alle formules en herbou van alle afhanklikhede tussen selle in alle oop werkboeke (gelykstaande aan die herinvoer van alle formules).
  • Werkkaarte (“Rapport”). Druk Uit – drukvel Fotos.
  • Bel MyMacro – voer 'n makro met die naam uit MyMakro.
  • Hierdie Werkboek. Stoor – stoor die huidige boek
  • ThisWorkbooks.SaveAs “D:ArchiveReport” & Replace(Nou, “:”, “-“) & “.xlsx” – stoor die boek in 'n gids D: Argief onder die naam Fotos met datum en tyd by die naam.

As u wil hê dat die makro slegs uitgevoer moet word wanneer die lêer om 5:00 deur die skeduleerder oopgemaak word, en nie elke keer as die gebruiker die werkboek gedurende die werksdag oopmaak nie, is dit sinvol om 'n tydkontrole by te voeg, byvoorbeeld:

As Format(Nou, "hh:mm") = "05:00" Dan ThisWorkbook.RefreshAll  

Dis al. Moenie vergeet om jou werkboek in 'n makro-geaktiveerde formaat (xlsm of xlsb) te stoor nie en jy kan Excel veilig toemaak en huis toe gaan en jou rekenaar aan laat. Op 'n gegewe oomblik (selfs al is die rekenaar gesluit), sal die skeduleerder Excel begin en die gespesifiseerde lêer daarin oopmaak, en ons makro sal die geprogrammeerde aksies uitvoer. En jy sal welig in die bed terwyl jou swaar verslag outomaties herbereken word – skoonheid! 🙂

  • Wat is makro's, hoe om dit te gebruik, waar om Visual Basic-kode in Excel in te voeg
  • Hoe om jou eie makro-byvoeging vir Excel te skep
  • Hoe om die Persoonlike Makro-werkboek as 'n biblioteek vir jou makro's in Excel te gebruik

Lewer Kommentaar