Покретање макроа на време

Веома чест случај у пракси: потребно је да покренете један или више својих макроа у датом тренутку или на одређеној фреквенцији. На пример, имате велики и тежак извештај који се ажурира пола сата и желели бисте да покренете ажурирање пола сата пре него што стигнете на посао ујутру. Или имате макро који би требало да аутоматски шаље е-пошту запосленима одређеном фреквенцијом. Или, када радите са заокретном табелом, желите да се ажурира у ходу сваких 10 секунди, итд.

Хајде да погледамо шта Екцел и Виндовс имају могућност да ово имплементирају.

Покретање макроа на датој фреквенцији

Најлакши начин да то урадите је да користите уграђени ВБА метод Апплицатион.ОнТимеАн који покреће наведени макро у одређено време. Хајде да то разумемо на практичном примеру.

Отворите Висуал Басиц едитор са истоименим дугметом на картици развијач (Програмер) или пречица на тастатури други+ФКСНУМКС, убаците нови модул кроз мени Инсерт – Модул и копирајте тамо следећи код:

Дим ТимеТоРун 'глобална варијабла где је похрањено време следећег покретања 'ово је главни макро Суб МиМацро() Апплицатион.Цалцулате 'поново израчунајте опсег књиге("А1").Интериор.ЦолорИндек = Инт(Рнд() * 56) 'филл ћелија А1 са насумичном бојом :) Позови НектРун 'покрени НектРун макро да бисте подесили време следећег покретања Енд Суб 'овај макро поставља време за следеће покретање главног макроа Суб НектРун() ТимеТоРун = Нов + ТимеВалуе("00: 00:03") 'додајте 3 секунде тренутном времену Апплицатион.ОнТиме ТимеТоРун, "МиМацро" 'закажите следеће покретање Енд Суб 'макро да започнете секвенцу понављања Суб Старт() Позовите НектРун Енд Суб 'макро да зауставите секвенцу понављања Суб Финисх() Апплицатион.ОнТиме ТимеТоРун, "МиМацро", , Фалсе Енд Суб  

Хајде да схватимо шта је овде.

Прво, потребна нам је променљива која ће чувати време следећег покретања нашег макроа – назвао сам је ТимеТоРун. Имајте на уму да садржај ове променљиве мора бити доступан свим нашим следећим макроима, тако да морамо да га направимо глобалан, односно декларисати на самом почетку модула пре првог Под.

Следеће долази наш главни макро МиМацро, који ће извршити главни задатак – да прерачуна књигу користећи метод Апплицатион.Цалцулате. Да би било јасније, додао сам формулу =ТДАТЕ() на лист у ћелији А1, који приказује датум и време – када се поново израчуна, његов садржај ће се ажурирати пред нашим очима (само укључите приказ секунди у ћелији формат). За додатну забаву, макроу сам додао и команду за попуњавање ћелије А1 насумично одабраном бојом (код боје је цео број у опсегу 0..56, који генерише функција Рнд и заокружује на целобројну функцију Инт).

Макро НектРун додаје претходној вредности ТимеТоРун Још 3 секунде, а затим заказује следеће покретање главног макроа МиМацро за ово ново време. Наравно, у пракси можете користити било које друге временске интервале који су вам потребни постављањем аргумената функције ТимеВалуе у формату хх:мм:сс.

И на крају, само ради погодности, додато је више макроа за покретање секвенце. Početna и његовог завршетка завршити. Последњи користи четврти аргумент методе да разбије низ. На време једнак Лажан.

Укупно ако покренете макро Početna, онда ће се цела ова вртешка вртети, а на листу ћемо видети следећу слику:

Можете да зауставите низ тако што ћете покренути, односно, макро завршити. Ради практичности, можете доделити пречице на тастатури за оба макроа помоћу команде Макрои – Опције табулатор развијач (Програмер — Макрои — Опције).

Покретање макроа по распореду

Наравно, све горе описано је могуће само ако имате покренут Мицрософт Екцел и у њему је отворен наш фајл. Погледајмо сада компликованији случај: потребно је да покренете Екцел према датом распореду, на пример, сваког дана у 5:00, у њему отворите велики и сложен извештај и ажурирате све везе и упите у њему тако да будите спремни док стигнемо на посао 🙂

У таквој ситуацији, боље је користити Виндовс Сцхедулер – програм посебно уграђен у било коју верзију Виндовс-а који може да извршава одређене радње по распореду. У ствари, већ га користите а да то нисте свесни, јер ваш рачунар редовно проверава да ли постоје ажурирања, преузима нове антивирусне базе података, синхронизује фасцикле у облаку, итд. Све је то дело Планера. Дакле, наш задатак је да постојећим задацима додамо још један који ће покренути Екцел и отворити наведену датотеку у њему. И окачићемо наш макро на догађај Воркбоок_Опен ову датотеку - и проблем је решен.

Одмах желим да вас упозорим да рад са Планером може захтевати напредна корисничка права, па ако не можете да пронађете доле описане команде и функције на свом радном рачунару у канцеларији, обратите се својим ИТ стручњацима за помоћ.

Покретање Планера

Дакле, хајде да покренемо Планер. Да бисте то урадили, можете:

  • Десни клик на дугме Почетак и изаберите Управљање рачунаром (управљање рачунаром)
  • Изаберите на контролној табли: Администрација – Планер задатака (Контролна табла — Административни алати — Планер задатака)
  • Изаберите из главног менија Старт – Прибор – Системски алати – Планер задатака
  • Притисните пречицу на тастатури Победити+R, уђите тасксцхд.мсц и притисните унети

Следећи прозор би требало да се појави на екрану (ја имам енглеску верзију, али можете имати и верзију):

Покретање макроа на време

Направите задатак

Да бисте креирали нови задатак помоћу једноставног чаробњака корак по корак, кликните на везу Направите једноставан задатак (Направи основни задатак) у десном панелу.

У првом кораку чаробњака унесите назив и опис задатка који треба да се креира:

Покретање макроа на време

Кликните на дугме Следећа (Следећи) а у следећем кораку бирамо окидач – фреквенцију покретања или догађај који ће покренути наш задатак (на пример, укључивање рачунара):

Покретање макроа на време

Ако сте изабрали Дневно (Свакодневно), затим у следећем кораку мораћете да изаберете одређено време, датум почетка низа и корак (сваког 2. дана, 5. дана, итд.):

Покретање макроа на време

Следећи корак је да изаберете акцију - Покрените програм (Покрени програм):

Покретање макроа на време

И на крају, најзанимљивије је шта тачно треба отворити:

Покретање макроа на време

У Програм или скрипта (Програм/скрипта) потребно је да унесете путању до Мицрософт Екцел-а као програма, односно директно до Екцел извршне датотеке. На различитим рачунарима са различитим верзијама оперативног система Виндовс и Оффице, ова датотека може бити у различитим фасциклама, па ево неколико начина да сазнате њену локацију:

  • Кликните десним тастером миша на икону (пречицу) да бисте покренули Екцел на радној површини или на траци задатака и изаберите команду Materijali (Својства), а затим у прозору који се отвори копирајте путању са линије Мета:

    Покретање макроа на време                      Покретање макроа на време

  • Отворите било коју Екцел радну свеску, а затим отворите таск манагер (Менаџер задатака) гурање Цтрл+други+od и десним кликом на линију Мицрософт Екцел, изаберите команду Materijali (Својства). У прозору који се отвори, можете копирати путању, не заборављајући да јој додате обрнуту косу црту и ЕКСЦЕЛ.ЕКСЕ на крају:

    Покретање макроа на време              Покретање макроа на време

  • Отворите Екцел, отворите Висуал Басиц едитор са пречицом на тастатури други+ФКСНУМКС, отворени панел непосредан комбинација Цтрл+G, унесите команду у њега:

    ? Апплицатион.Патх

    … и кликните на унети

    Покретање макроа на време

    Копирајте резултујућу путању, не заборављајући да јој додате обрнуту косу црту и ЕКСЦЕЛ.ЕКСЕ на крају.

У Додајте аргументе (опционо) (Додајте аргументе (опционо)) потребно је да уметнете пуну путању до књиге са макроом који желимо да отворимо.

Када је све унето, кликните Следећа и онда завршити (završi). Задатак треба додати на општу листу:

Покретање макроа на време

Погодно је управљати креираним задатком помоћу дугмади са десне стране. Овде можете тестирати задатак тако што ћете га одмах покренути (трцати)не чекајући одређено време. Можете привремено да деактивирате задатак (Онемогући)тако да престане да ради на одређено време, као што је ваш одмор. Па, увек можете да промените параметре (датуме, време, назив датотеке) преко дугмета Materijali (Својства).

Додајте макро да бисте отворили датотеку

Сада остаје да закачимо у нашу књигу покретање макроа који нам је потребан на догађају отварања датотеке. Да бисте то урадили, отворите књигу и идите у уређивач Висуал Басиц користећи пречицу на тастатури други+ФКСНУМКС или дугмад Висуал Басиц табулатор развијач (Програмер). У прозору који се отвара у горњем левом углу, потребно је да пронађете нашу датотеку на стаблу и двапут кликните да бисте отворили модул Ова књига (Ова радна свеска).

Ако не видите овај прозор у уређивачу Висуал Басиц-а, можете га отворити кроз мени Поглед — Пројецт Екплорер.

У прозору модула који се отвори додајте руковалац догађаја отварања књиге тако што ћете га изабрати са падајућих листа на врху Радна свеска и отворен, редом:

Покретање макроа на време

На екрану би требало да се појави шаблон процедуре. Воркбоок_Опен, где између редова Привате Суб и Енд Суб и треба да убаците оне ВБА команде које треба аутоматски да се изврше када се ова Екцел радна свеска отвори, када је Сцхедулер отвори према распореду. Ево неколико корисних опција за оверклокирање:

  • ТхисВоркбоок.РефресхАлл – Освежава све екстерне упите података, Повер Куери упите и изведене табеле. Најсвестранија опција. Само не заборавите да подразумевано дозволите везе са спољним подацима и ажурирате везе путем Датотека – Опције – Центар за поверење – Опције центра за поверење – Спољни садржај, у супротном, када отворите књигу, појавиће се стандардно упозорење и Екцел ће, не ажурирајући ништа, чекати ваш благослов у виду клика на дугме Омогући садржај (Омогући садржај):

    Покретање макроа на време

  • АцтивеВоркбоок.Цоннецтионс(“Цоннецтион_Наме”).Рефресх — ажурирање података на вези Име_везе.
  • Листови („Лист5“).Заокретне табеле(“Заокретна табела1«).ПивотЦацхе.Рефресх – ажурирање једне пивот табеле под називом Изведена табела1 на листу СхеетКСНУМКС.
  • Апплицатион.Цалцулате – прерачунавање свих отворених Екцел радних свеска.
  • Апплицатион.ЦалцулатеФуллРебуилд – принудно поновно израчунавање свих формула и обнављање свих зависности између ћелија у свим отвореним радним свескама (еквивалентно поновном уносу свих формула).
  • Радни листови(„Извештај“).ПринтОут – штампани лист Фотографије.
  • Позовите МиМацро – покрените макро под називом МиМацро.
  • ТхисВоркбоок.Саве – сачувајте тренутну књигу
  • ТхисВоркбоокс.Саве Ас “Д:АрцхивеРепорт” & Реплаце(Сада, “:”, “-“) & “.клск” – сачувајте књигу у фасцикли Д: Архива под називом Фотографије са датумом и временом придодатим имену.

Ако желите да се макро извршава само када планер отвори датотеку у 5:00 ујутро, а не сваки пут када корисник отвори радну свеску током радног дана, онда има смисла додати временску проверу, на пример:

Ако је Формат(Нов, "хх:мм") = "05:00" онда је ова радна свеска.РефресхАлл  

То је све. Не заборавите да сачувате своју радну свеску у формату са омогућеним макроима (клсм или клсб) и можете безбедно затворити Екцел и отићи кући, остављајући рачунар укључен. У датом тренутку (чак и ако је рачунар закључан), Планер ће покренути Екцел и отворити наведену датотеку у њему, а наш макро ће извршити програмиране радње. И уживаћете у кревету док се ваш тежак извештај аутоматски прерачунава – лепота! 🙂

  • Шта су макрои, како их користити, где убацити Висуал Басиц код у Екцел
  • Како да направите сопствени макро додатак за Екцел
  • Како да користите личну књигу макроа као библиотеку за своје макрое у Екцел-у

Ostavite komentar