Kouri yon macro alè

Yon ka trè komen nan pratik: ou bezwen kouri youn oswa plis nan makro ou nan yon moman bay oswa nan yon sèten frekans. Pou egzanp, ou gen yon rapò gwo ak lou ki mete ajou yon demi èdtan epi ou ta renmen kouri aktyalizasyon a yon demi èdtan anvan ou rive nan travay nan maten an. Oswa ou gen yon makro ki ta dwe otomatikman voye imèl bay anplwaye yo nan yon frekans espesifye. Oswa, lè w ap travay ak yon PivotTable, ou vle li mete ajou sou vole a chak 10 segonn, ak sou sa.

Ann gade nan ki sa Excel ak Windows gen kapasite nan aplike sa a.

Kouri yon macro nan yon frekans bay

Fason ki pi fasil pou fè sa se sèvi ak metòd VBA entegre Aplikasyon.OnTimeYon ki kouri macro espesifye a nan moman espesifye a. Ann konprann sa ak yon egzanp pratik.

Louvri editè Visual Basic ak bouton an menm non sou tab la pwomotè (Devlopè) oswa rakoursi klavye Alt+F11, mete yon nouvo modil nan meni an Mete – Modil epi kopye kòd sa a la:

Dim TimeToRun 'global varyab kote pwochen tan an kouri ki estoke' sa a se makro prensipal Sub MyMacro() Application.Calculate 'rekalkile liv Range("A1").Interior.ColorIndex = Int(Rnd() * 56) 'ranpli selil A1 ak yon koulè o aza :) Rele NextRun 'kouri NextRun makro a pou fikse pwochen tan an kouri End Sub 'makro sa a fikse tan pou pwochen kouri nan makro prensipal la Sub NextRun() TimeToRun = Now + TimeValue("00: 00:03") 'ajoute 3 segonn nan tan aktyèl la Application.OnTime TimeToRun, "MyMacro" 'pwograme pwochen kouri Fin Sub 'makro pou kòmanse sekans repete Sub Start() Rele NextRun End Sub 'makro pou sispann sekans repete Sub Finish() Application.OnTime TimeToRun, "MyMacro", , False End Sub  

Ann chèche konnen ki sa ki isit la.

Premyèman, nou bezwen yon varyab ki pral estoke tan nan pwochen kouri nan makro nou an - mwen te rele li TimeToRun. Tanpri sonje ke sa ki nan varyab sa a dwe disponib nan tout makro ki vin apre nou yo, kidonk nou bezwen fè li. mondyal, sa vle di deklare nan kòmansman an anpil nan modil la anvan premye a Gwoup.

Apre vini macro prensipal nou an MyMacro, ki pral fè travay prensipal la - rekalkile liv la lè l sèvi avèk metòd la Aplikasyon.Kalkile. Pou fè li pi klè, mwen te ajoute fòmil la = TDATE () nan fèy la nan selil A1, ki montre dat la ak lè - lè yo rekalkile, kontni li yo pral mete ajou dwat devan je nou (jis vire sou ekspozisyon an nan segonn nan selil la). fòma). Pou plis plezi, mwen te ajoute tou nan makro a lòd pou ranpli selil A1 ak yon koulè chwazi owaza (kòd koulè a ​​se yon nonb antye relatif nan seri 0..56, ki se pwodwi pa fonksyon an). rnd ak awondi jiska yon fonksyon nonb antye relatif Int).

Macro NextRun ajoute nan valè anvan an TimeToRun 3 segonn plis ak Lè sa a, pwograme pwochen kouri nan macro prensipal la MyMacro pou nouvo tan sa a. Natirèlman, nan pratik, ou ka itilize nenpòt lòt entèval tan ou bezwen lè w mete agiman fonksyon yo TimeValue nan fòma hh:mm:ss.

Epi finalman, jis pou konvenyans, yo te ajoute plis makro sekans lansman. Akèy ak fini li Fini. Dènye a sèvi ak katriyèm agiman metòd pou kraze sekans lan. A lè egal Fo.

Total si ou kouri macro a Akèy, Lè sa a, tout Carousel sa a pral vire, epi nou pral wè foto sa a sou fèy la:

Ou ka sispann sekans nan kouri, respektivman, macro a Fini. Pou konvenyans, ou ka bay rakoursi klavye nan tou de makro lè l sèvi avèk lòd la Makro - Opsyon tab pwomotè (Devlopè — Macro — Opsyon).

Kouri yon macro sou yon orè

Natirèlman, tout bagay ki dekri pi wo a posib sèlman si ou gen Microsoft Excel kouri ak dosye nou an louvri nan li. Koulye a, ann gade nan yon ka ki pi konplike: ou bezwen kouri Excel selon yon orè bay, pou egzanp, chak jou a 5:00, louvri yon rapò gwo ak konplèks nan li epi mete ajou tout koneksyon ak demann nan li pou li pral pare pou lè nou rive nan travay 🙂

Nan yon sitiyasyon konsa, li pi bon pou itilize Windows Scheduler – yon pwogram espesyalman bati nan nenpòt vèsyon Windows ki ka fè aksyon espesifik sou yon orè. An reyalite, ou deja sèvi ak li san yo pa konnen li, paske PC ou regilyèman tcheke pou mizajou, telechaje nouvo baz done anti-viris, senkronize dosye nwaj, elatriye Se tout travay la nan Scheduler la. Se konsa, travay nou an se ajoute nan travay yo ki deja egziste yon lòt ki pral lanse Excel epi louvri dosye a espesifye nan li. Epi nou pral pann makro nou an sou evènman an Workbook_Open dosye sa a - epi pwoblèm nan rezoud.

Mwen vle avèti ou touswit ke travay ak Scheduler la ka mande dwa itilizatè avanse, kidonk si ou pa ka jwenn kòmandman ak fonksyon ki dekri anba a sou òdinatè travay ou nan biwo a, kontakte espesyalis IT ou yo pou èd.

Lanse Scheduler la

Se konsa, ann kòmanse Scheduler la. Pou fè sa, ou ka swa:

  • Dwa klike sou bouton an Kòmanse epi chwazi Jesyon Odinatè (Jesyon òdinatè)
  • Chwazi nan Kontwòl Panel: Administrasyon – Planifikasyon travay (Kontwòl Panel — Zouti Administratif — Task Scheduler)
  • Chwazi nan meni prensipal la Kòmanse – Pwodwi pou Telefòn – Zouti Sistèm – Planifikatè Objektif Travay la
  • Peze klavye klavye Genyen+R, antre taskschd.msc ak laprès Antre nan

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

Kouri yon macro alè

Kreye yon travay

Pou kreye yon nouvo travay lè l sèvi avèk yon senp sòsye etap-pa-etap, klike sou lyen an Kreye yon travay ki senp (Kreye travay de baz) nan panèl dwat la.

Nan premye etap la nan sòsye an, antre non an ak deskripsyon travay la yo dwe kreye:

Kouri yon macro alè

Klike sou bouton an Next (Apre) ak nan pwochen etap la nou chwazi yon deklanche - frekans lansman an oswa yon evènman ki pral lanse travay nou an (pa egzanp, vire sou òdinatè a):

Kouri yon macro alè

Si ou te chwazi Chak jou (Chak jou), Lè sa a, nan pwochen etap la ou pral bezwen chwazi yon tan espesifik, dat kòmansman sekans lan ak etap (chak 2yèm jou, 5yèm jou, elatriye):

Kouri yon macro alè

Pwochen etap la se chwazi yon aksyon - Kouri pwogram nan (Kòmanse yon pwogram):

Kouri yon macro alè

Epi finalman, bagay ki pi enteresan an se egzakteman sa ki bezwen yo dwe louvri:

Kouri yon macro alè

Nan la Pwogram oswa script (Pwogram/script) ou bezwen antre nan chemen an nan Microsoft Excel kòm yon pwogram, sa vle di dirèkteman nan ègzèkutabl nan Excel. Sou diferan òdinatè ak diferan vèsyon Windows ak Biwo, fichye sa a ka nan diferan dosye, kidonk isit la gen kèk fason pou w konnen kote li yo:

  • Dwa-klike sou icon nan (rakoursi) pou lanse Excel sou Desktop la oswa nan ba travay la epi chwazi lòd la Materyèl (Pwopriyete), ak Lè sa a, nan fenèt la ki ouvè, kopye chemen ki soti nan liy lan sib:

    Kouri yon macro alè                      Kouri yon macro alè

  • Louvri nenpòt liv travay Excel, Lè sa a, louvri Objektif Travay la Manadjè (Manadjè travay) pouse Ctrl+Alt+Soti nan epi klike sou liy lan dwat Microsoft Excel, chwazi yon lòd Materyèl (Pwopriyete). Nan fenèt la ki ouvè, ou ka kopye chemen an, pa bliye ajoute yon backslash nan li ak EXCEL.EXE nan fen an:

    Kouri yon macro alè              Kouri yon macro alè

  • Louvri Excel, louvri editè Visual Basic ak chemen kout klavye Alt+F11, louvri panèl imedyat yon konbinezon de Ctrl+G, antre kòmandman an nan li:

    ? Aplikasyon.Chemen

    … epi klike sou Antre nan

    Kouri yon macro alè

    Kopi chemen an ki kapab lakòz, pa bliye ajoute yon backslash nan li ak EXCEL.EXE nan fen an.

Nan la Ajoute agiman (si ou vle) (Ajoute agiman (si ou vle)) ou bezwen insert chemen an plen nan liv la ak makro a ke nou vle louvri.

Lè tout bagay antre, Lè sa a, klike sou Next ak Lè sa a, Fini (Fini). Travay la ta dwe ajoute nan lis jeneral la:

Kouri yon macro alè

Li se pratik jere travay la kreye lè l sèvi avèk bouton ki sou bò dwat la. Isit la ou ka teste travay la pa kouri li imedyatman (kouri)san yo pa tann pou tan an espesifye. Ou ka dezaktive yon travay tanporèman (Enfim)pou li sispann kouri pou yon peryòd de tan, tankou vakans ou. Oke, ou ka toujou chanje paramèt yo (dat, lè, non dosye) atravè bouton an Materyèl (Pwopriyete).

Ajoute yon makro pou ouvri yon dosye

Koulye a, li rete yo kwoke nan liv nou an lansman de makro a nou bezwen sou evènman an louvri dosye. Pou fè sa, louvri liv la epi ale nan editè Visual Basic lè l sèvi avèk chemen kout klavye a Alt+F11 oswa bouton Vizyèl Debaz tab pwomotè (Devlopè). Nan fennèt la ki ouvè nan kwen anwo gòch la, ou bezwen jwenn dosye nou an sou pye bwa a ak doub-klike sou yo louvri modil la. Liv sa a (Liv sa a).

Si ou pa wè fenèt sa a nan editè Visual Basic, Lè sa a, ou ka louvri li nan meni an View — Pwojè Explorer.

Nan fennèt modil ki ouvè a, ajoute yon liv kap okipe evènman ouvè lè w chwazi li nan lis ki anlè a. Liv travay и louvri, respektivman:

Kouri yon macro alè

Yon modèl pwosedi ta dwe parèt sou ekran an. Workbook_Open, kote ant liy yo Prive Sub и Fen Gwoup epi ou bezwen mete kòmandman VBA sa yo ki ta dwe otomatikman egzekite lè liv Excel sa a louvri, lè Planifikatè a ouvri li selon orè a. Men kèk opsyon itil pou overclocking:

  • ThisWorkbook.RefreshAll – Rafrechi tout demann done ekstèn, demann Power Query, ak PivotTable. Opsyon ki pi versatile. Jis pa bliye pèmèt koneksyon ak done ekstèn pa default ak mete ajou lyen atravè File – Opsyon – Sant konfyans – Opsyon Sant konfyans – Kontni ekstèn, otreman, lè ou louvri liv la, yon avètisman estanda ap parèt ak Excel, san yo pa mete ajou anyen, ap tann pou benediksyon ou nan fòm lan nan klike sou bouton an. Pèmèt kontni (Pèmèt kontni):

    Kouri yon macro alè

  • ActiveWorkbook.Connections(“Connection_Name”).Actualiser — mete ajou done sou koneksyon an Connection_Name.
  • Sheets ("Fèy 5").PivotTables("PivotTable1«).PivotCache.Rafrechi – mete ajou yon tab pivot sèl ki rele PivotTable 1 sou fèy la Sheet5.
  • Aplikasyon.Kalkile – rekalkile tout liv Excel louvri.
  • Application.CalculateFullRebuild – fòse rekalkile tout fòmil ak rekonstwi tout depandans ant selil nan tout liv travay ouvè (ekivalan a re-antre tout fòmil).
  • Fèy travay ("Rapò"). PrintOut - enprime fèy foto.
  • Rele MyMacro – kouri yon makro yo rele MyMacro.
  • Sa a Workbook.Save - sove liv aktyèl la
  • ThisWorkbooks.SaveAs “D:ArchiveReport” & Ranplase(Kounye a, “:”, “-“) & “.xlsx” - sove liv la nan yon katab D: Achiv anba non an foto ak dat ak lè ajoute nan non an.

Si ou vle makro a dwe egzekite sèlman lè dosye a louvri pa Planifikatè a nan 5:00 am, epi li pa chak fwa itilizatè a louvri liv travay la pandan jounen travay la, Lè sa a, li fè sans pou ajoute yon chèk tan, pou egzanp:

Si Fòma(Kounye a, "hh:mm") = "05:00" Lè sa a, ThisWorkbook.RefreshAll  

Se tout. Pa bliye sove liv travay ou a nan yon fòma makro-pèmèt (xlsm oswa xlsb) epi ou ka san danje fèmen Excel epi ale lakay ou, kite òdinatè w lan sou. Nan yon moman bay (menm si PC a fèmen), Planifikatè a pral lanse Excel epi ouvri dosye a espesifye nan li, ak macro nou an pral fè aksyon yo pwograme. Epi ou pral luks nan kabann nan pandan y ap rapò lou ou otomatikman rekalkile - bote! 🙂

  • Ki sa ki makro, ki jan yo sèvi ak yo, ki kote yo mete kòd Visual Basic nan Excel
  • Ki jan yo kreye pwòp ajoute macro ou pou Excel
  • Ki jan yo itilize Liv Macro Pèsonèl la kòm yon bibliyotèk pou makro ou yo nan Excel

Kite yon Reply