tartalom
Nagyon gyakori eset a gyakorlatban: egy vagy több makrót kell futtatnia egy adott időpontban vagy bizonyos gyakorisággal. Például van egy nagy és nehéz jelentés, amely fél órával frissül, és szeretné futtatni a frissítést fél órával azelőtt, hogy reggel megérkezne a munkahelyére. Vagy van egy makrója, amelynek meghatározott gyakorisággal automatikusan e-maileket kell küldenie az alkalmazottaknak. Vagy ha kimutatástáblával dolgozik, azt szeretné, hogy az menet közben 10 másodpercenként frissüljön, és így tovább.
Nézzük meg, hogy az Excel és a Windows mire képes ezt megvalósítani.
Makró futtatása adott gyakorisággal
Ennek legegyszerűbb módja a beépített VBA módszer használata Application.OnTimeOlyan, amely a megadott időpontban futtatja a megadott makrót. Értsük meg ezt egy gyakorlati példával.
Nyissa meg a Visual Basic szerkesztőt a lap azonos nevű gombjával fejlesztő (Fejlesztő) vagy billentyűparancsot más+F11, helyezzen be egy új modult a menün keresztül Beszúrás – Modul és másold oda a következő kódot:
Dim TimeToRun 'globális változó, ahol a következő futási idő kerül tárolásra 'ez a fő makró Sub MyMacro() Application.Calculate 'számítja újra a könyvet Range("A1").Interior.ColorIndex = Int(Rnd() * 56) 'fill A1 cella véletlenszerű színnel :) Hívja a NextRun-t 'futtassa a NextRun makrót a következő futási idő beállításához End Sub 'ez a makró beállítja a fő makró következő futtatásának idejét Sub NextRun() TimeToRun = Now + TimeValue("00: 00:03") 'adjon hozzá 3 másodpercet az aktuális időhöz Application.OnTime TimeToRun, "MyMacro" 'ütemezze be a következő futtatást End Sub 'makró az ismétlési szekvencia elindításához Sub Start() Hívja a NextRun End Sub 'makrót az ismétlési szekvencia leállításához Sub Finish() Application.OnTime TimeToRun, "MyMacro", , False End Sub
Találjuk ki, mi van itt.
Először is szükségünk van egy változóra, amely eltárolja a makrónk következő futtatásának idejét – neveztem el TimeToRun. Kérjük, vegye figyelembe, hogy ennek a változónak a tartalmának elérhetőnek kell lennie az összes későbbi makró számára, ezért el kell készítenünk globális, azaz deklarálja a modul legelején az első előtt alatt.
Következik a fő makrónk MyMacro, amely elvégzi a fő feladatot – a könyv újraszámítását a módszerrel Alkalmazás.Számítás. Az érthetőség kedvéért az A1 cellában lévő laphoz hozzáadtam a =TDATE() képletet, amely a dátumot és az időt jeleníti meg – újraszámításkor a tartalma a szemünk láttára frissül (csak kapcsold be a másodpercek megjelenítését a cellában formátum). Az extra szórakozás kedvéért a makróhoz azt a parancsot is hozzáadtam, hogy az A1 cellát véletlenszerűen kiválasztott színnel töltsem ki (a színkód egy 0...56 tartományba eső egész szám, amelyet a függvény generál Rnd és egész függvényre kerekít Int).
Macro NextRun hozzáad az előző értékhez TimeToRun Még 3 másodpercig, majd ütemezi a fő makró következő futtatását MyMacro erre az új időre. Természetesen a gyakorlatban bármilyen más szükséges időintervallumot használhatunk a függvény argumentumainak beállításával TimeValue óó:pp:pp formátumban.
És végül, csak a kényelem kedvéért, több sorozatindító makrót is hozzáadtunk. Kezdőlap és annak befejezése befejez. Az utolsó a negyedik metódus argumentumot használja a sorozat megszakításához. Időben egyenlő Hamis.
Összesen, ha futtatja a makrót Kezdőlap, akkor ez az egész körhinta forog, és a következő képet fogjuk látni a lapon:
A sorozatot a makró futtatásával állíthatja le befejez. A kényelem érdekében a paranccsal mindkét makróhoz billentyűparancsokat rendelhet Makrók – Opciók lap fejlesztő (Fejlesztő – Makrók – Opciók).
Makró futtatása ütemezetten
Természetesen a fent leírtak csak akkor lehetségesek, ha fut a Microsoft Excel, és meg van nyitva benne a fájlunk. Most nézzünk egy bonyolultabb esetet: adott ütemezés szerint kell futtatni az Excelt, például minden nap 5:00-kor, megnyitni benne egy nagy és összetett jelentést, és frissíteni kell az összes kapcsolatot és lekérdezést, hogy az álljunk készen, mire munkába érünk 🙂
Ilyen helyzetben jobb használni Windows ütemező – egy speciálisan a Windows bármely verziójába beépített program, amely meghatározott műveleteket ütemezetten végrehajthat. Valójában már anélkül használja, hogy tudná, mert számítógépe rendszeresen ellenőrzi a frissítéseket, letölti az új víruskereső adatbázisokat, szinkronizálja a felhő mappákat stb. Mindez az ütemező munkája. Tehát az a feladatunk, hogy a meglévő feladatokhoz adjunk még egyet, ami elindítja az Excelt és megnyitja benne a megadott fájlt. A makrónkat pedig felakasztjuk az eseményre Munkafüzet_Megnyitás ezt a fájlt – és a probléma megoldódott.
Azonnal figyelmeztetem, hogy az Ütemezővel való munkavégzés magasabb szintű felhasználói jogosultságot igényelhet, ezért ha nem találja az alábbiakban ismertetett parancsokat és funkciókat a munkahelyi számítógépén az irodában, kérjen segítséget informatikusaitól.
Az ütemező indítása
Tehát indítsuk el az ütemezőt. Ehhez a következőket teheti:
- Kattintson a jobb gombbal a gombra Rajt És válasszon számítógép kezelése (Számítógép menedzsment)
- Válassza ki a Vezérlőpulton: Adminisztráció – Feladatütemező (Vezérlőpult — Felügyeleti eszközök — Feladatütemező)
- Válassza ki a főmenüből Start – Tartozékok – Rendszereszközök – Feladatütemező
- Nyomja meg a billentyűparancsot győzelem+R, belép taskschd.msc és nyomja meg az belép
A következő ablaknak kell megjelennie a képernyőn (van angol verzióm, de neked is van verzió):
Hozzon létre egy feladatot
Új feladat létrehozásához egy egyszerű, lépésenkénti varázsló segítségével kattintson a hivatkozásra Hozzon létre egy egyszerű feladatot (Alapfeladat létrehozása) a jobb oldali panelen.
A varázsló első lépésében adja meg a létrehozandó feladat nevét és leírását:
Kattintson a gombra Következő (Következő) és a következő lépésben kiválasztunk egy triggert – az indítási gyakoriságot vagy egy eseményt, amely elindítja a feladatunkat (például a számítógép bekapcsolása):
Ha úgy döntött Napi (Napi), akkor a következő lépésben ki kell választania egy adott időpontot, a sorozat kezdő dátumát és a lépést (minden 2. napon, 5. napon stb.):
A következő lépés a művelet kiválasztása – Futtassa a programot (Program indítása):
És végül a legérdekesebb dolog az, hogy pontosan mit kell megnyitni:
A Program vagy script (Program/forgatókönyv) meg kell adnia a Microsoft Excel elérési útját programként, azaz közvetlenül az Excel végrehajtható fájljához. Különböző Windows- és Office-verziójú számítógépeken ez a fájl különböző mappákban lehet, ezért itt van néhány módszer a helyének megállapítására:
- Kattintson jobb gombbal az ikonra (parancsikonra) az Excel elindításához az asztalon vagy a tálcán, és válassza ki a parancsot Anyagok (Tulajdonságok), majd a megnyíló ablakban másolja ki az elérési utat a sorból cél:
- Nyissa meg bármelyik Excel-munkafüzetet, majd nyissa meg Task Manager (Feladatkezelő) toló Ctrl+más+Tól től és jobb gombbal a sorra Microsoft Excel, válasszon parancsot Anyagok (Tulajdonságok). A megnyíló ablakban átmásolhatja az elérési utat, ne felejtsd el hozzá tenni a fordított perjelet és a végére az EXCEL.EXE-t:
- Nyissa meg az Excelt, nyissa meg a Visual Basic szerkesztőt a billentyűparancsokkal más+F11, nyitott panel azonnali kombinációja Ctrl+G, írja be a parancsot:
? Application.Path
… és kattintson rá belép
Másolja a kapott útvonalat, ne felejtsd el hozzá tenni a fordított perjelet és a végére az EXCEL.EXE-t.
A Argumentumok hozzáadása (opcionális) (Argumentumok hozzáadása (opcionális)) be kell szúrnia a könyv teljes elérési útját a megnyitni kívánt makróval.
Ha mindent beírt, kattintson Következő és azután befejez (Befejez). A feladatot hozzá kell adni az általános listához:
A létrehozott feladatot kényelmesen kezelheti a jobb oldali gombokkal. Itt azonnali futtatással tesztelheti a feladatot (fuss)anélkül, hogy megvárná a megadott időt. Ideiglenesen deaktiválhat egy feladatot (Letiltás)így egy időre, például a nyaralásra, leáll. Nos, a paramétereket (dátum, idő, fájlnév) a gombbal mindig módosíthatja Anyagok (Tulajdonságok).
Adjon hozzá makrót a fájl megnyitásához
Most már csak be kell akasztanunk könyvünkbe a fájlmegnyitási eseményhez szükséges makró elindítását. Ehhez nyissa meg a könyvet, és nyissa meg a Visual Basic szerkesztőt a billentyűparancs segítségével más+F11 vagy gombokat Visual Basic lap fejlesztő (Fejlesztő). A bal felső sarokban megnyíló ablakban meg kell találni a fájlunkat a fán, és duplán kattintani kell a modul megnyitásához Ezt a könyvet (Ez a munkafüzet).
Ha nem látja ezt az ablakot a Visual Basic szerkesztőben, akkor a menüből nyithatja meg Nézet — Project Explorer.
A megnyíló modulablakban adjon hozzá egy könyvnyitási eseménykezelőt úgy, hogy kiválasztja azt a tetején lévő legördülő listákból Munkafüzet и Nyisd ki, illetve:
Egy eljárássablonnak kell megjelennie a képernyőn. Munkafüzet_Megnyitás, ahol a sorok között Privát részleg и End Sub és be kell illeszteni azokat a VBA-parancsokat, amelyeknek az Excel-munkafüzet megnyitásakor automatikusan végrehajtásra kell kerülniük, amikor az ütemező ütemezés szerint megnyitja. Íme néhány hasznos opció a túlhajtáshoz:
- ThisWorkbook.RefreshAll – Frissíti az összes külső adatlekérdezést, Power Query lekérdezést és kimutatást. A legsokoldalúbb lehetőség. Csak ne felejtse el alapértelmezés szerint engedélyezni a külső adatokhoz való csatlakozást, és frissítse a hivatkozásokat ezen keresztül Fájl – Beállítások – Bizalmi központ – Bizalmi központ beállításai – Külső tartalom, ellenkező esetben a könyv megnyitásakor egy szabványos figyelmeztetés jelenik meg, és az Excel anélkül, hogy bármit is frissítene, várja áldását a gombra kattintás formájában Engedélyezze a tartalmat (Tartalom engedélyezése):
- ActiveWorkbook.Connections(“Connection_Name”).Frissítés — a Connection_Name kapcsolat adatainak frissítése.
- Lapok ("Sheet5").PivotTables("PivotTable1«).PivotCache.Frissítés – egyetlen nevű pivot tábla frissítése PivotTable1 a lapon Sheet5.
- Alkalmazás.Számítás – az összes megnyitott Excel munkafüzet újraszámítása.
- Application.CalculateFullRebuild – az összes képlet kényszerített újraszámítása és az összes nyitott munkafüzet cellái közötti összes függőség újraépítése (az összes képlet újbóli megadásával egyenértékű).
- Munkalapok („Jelentés”). Nyomtatás – nyomdalap képek.
- Hívja a MyMacro-t – futtasson egy nevű makrót MyMacro.
- ThisWorkbook.Save – mentse az aktuális könyvet
- ThisWorkbooks.Save As "D:ArchiveReport" & Replace(Now, ":", "-") & ".xlsx" – mentse a könyvet egy mappába D: Archívum néven képek dátummal és időponttal a névhez.
Ha azt szeretné, hogy a makró csak akkor kerüljön végrehajtásra, amikor a fájlt az ütemező hajnali 5:00-kor nyitja meg, és ne minden alkalommal, amikor a felhasználó munkanap közben megnyitja a munkafüzetet, akkor érdemes időellenőrzést hozzáadni, például:
Ha Format(Now, "óó:pp") = "05:00", akkor ThisWorkbook.RefreshAll
Ez minden. Ne felejtse el menteni a munkafüzetet makróképes formátumban (xlsm vagy xlsb), és biztonságosan bezárhatja az Excelt, és hazamehet, bekapcsolva hagyva a számítógépet. Egy adott pillanatban (akkor is, ha a PC le van zárva) az Ütemező elindítja az Excelt és megnyitja benne a megadott fájlt, a makrónk pedig elvégzi a programozott műveleteket. És az ágyban dőzsölni fog, miközben a súlyos jelentést automatikusan újraszámolják – szépség! 🙂
- Mik azok a makrók, hogyan kell használni őket, hova kell beszúrni a Visual Basic kódot az Excelben
- Saját makróbővítmény létrehozása az Excelhez
- A Személyes makró munkafüzet használata makrók könyvtáraként az Excelben