Для этого проще всего использовать встроенный в VBA метод Application.OnTime, который запускает заданный макрос в указанный момент времени. Давайте разберемся с этим на практическом примере.
Откройте редактор Visual Basic одноименной кнопкой на вкладке Разработчик (Developer) или сочетанием клавиш Alt + F11 , вставьте новый модуль через меню Insert — Module и скопируйте туда следующий код:
Dim TimeToRun ‘глобальная переменная, где хранится следующее время запуска ‘это главный макрос Sub MyMacro() Application.Calculate ‘пересчитываем книгу Range(«A1»).Interior.ColorIndex = Int(Rnd() * 56) ‘заливаем ячейку А1 случайным цветом 🙂 Call NextRun ‘запускаем макрос NextRun для назначения след.времени запуска End Sub ‘этот макрос назначает время следующего запуска главного макроса Sub NextRun() TimeToRun = Now + TimeValue(«00:00:03») ‘прибавляем к текущему времени 3 сек Application.OnTime TimeToRun, «MyMacro» ‘назначаем следующий запуск End Sub ‘макрос для запуска последовательности повторений Sub Start() Call NextRun End Sub ‘макрос для остановки последовательности повторений Sub Finish() Application.OnTime TimeToRun, «MyMacro», , False End Sub
Восстановление после ошибок Windows
Давайте разберемся что здесь что.
Для начала, нам нужна переменная, где будет храниться время следующего запуска нашего макроса — я назвал её TimeToRun. Обратите внимание, что содержимое этой переменной должно быть доступно всем нашим последующим макросам, поэтому её надо сделать глобальной, т.е. объявить в самом начале модуля до первого Sub. Дальше идет наш главный макрос MyMacro, который будет выполнять основную задачу — пересчитывать книгу с помощью метода Application.Calculate. Чтобы было нагляднее, я добавил на лист в ячейку А1 формулу =ТДАТА(), которая выводит дату и время — при пересчете её содержимое будет обновляться прямо у нас на глазах (только включите отображение секунд в формате ячейки). Для дополнительного веселья я добавил в макрос еще и команду заливки ячейки А1 случайно выбранным цветом (код цвета — это целое числов в диапазоне 0..56, которое генерит функция Rnd и округляет до целого числа функция Int).
Макрос NextRun добавляет к предыдущему значению TimeToRun еще 3 секунды и затем назначает следующий запуск главного макроса MyMacro на это новое время. Само-собой, на практике можно использовать любые другие нужные вам временные интервалы, задавая аргументы функции TimeValue в формате «чч:мм:сс». Ну и, наконец, просто для удобства добавлены еще макросы запуска последовательности Start и её завершения Finish. В последнем из них для прерывания последовательности используется четвёртый аргумент метода OnTime равный False.
Итого, если запустить макрос Start, то вся эта карусель завертится, и мы увидим на листе вот такую картину:
Остановить последовательность можно, запустив, соответственно макрос Finish. Для удобства можно обоим макросам назначить сочетания клавиш, используя команду Макросы — Параметры на вкладке Разработчик (Developer — Macros — Options) .
Как автоматически запускать программы и выключать компьютер по расписанию в windows 7 8 10
Запуск макроса по расписанию
Само-собой, всё описанное выше возможно только в том случае, если у вас запущен Microsoft Excel и в нём открыт наш файл. Теперь давайте рассмотрим более сложный случай: нужно по заданному расписанию, например, каждый день в 5:00 запускать Excel, открывать в нем большой и сложный отчет и обновлять в нем все связи и запросы, чтобы к нашему приходу на работу он был уже готов 🙂 В такой ситуации лучше воспользоваться Планировщиком Windows — специально встроенной в любую версию Windows программой, которая умеет по расписанию выполнять заданные действия.
По факту, вы уже используете его, сами того не зная, ведь ваш ПК регулярно проверяет обновления, качает новые антивирусные базы, синхронизирует облачные папки и т.д. — это всё работа Планировщика. Так что наша задача сводится к тому, чтобы добавить к уже имеющимся задачам ещё одну, которая будет запускать Excel и открывать в нём заданный файл. А мы с вами повесим наш макрос на событие Workbook_Open этого файла — и задача решена. Хочу сразу предупредить, что для работы с Планировщиком, возможно, потребуются расширенные пользовательские права, поэтому, если вы не можете найти описанных ниже команд и функций у себя на рабочем компьютере в офисе — обратитесь за помощью к вашим IT-специалистам.
Запускаем Планировщик
- Щелкнуть правой кнопкой мыши по кнопке Пуск и выбрать Управление компьютером (Computer management)
- Выбрать в Панели управления: Администрирование — Планировщик заданий (Control Panel — Administrative Tools — Task Scheduler )
- Выбрать в главном меню Пуск — Стандартные — Служебные — Планировщик заданий
- Нажать сочетание клавиш Win + R , ввести taskschd.msc и нажать Enter
На экране должно появиться примерно такое окно (у меня англоязычная версия, но у вас может быть и русскоязычная):
Создаем задачу
Чтобы создать новую задачу с помощью простого пошагового мастера нажмем на ссылку Создать простую задачу (Create Basic Task) в правой панели.
На первом шаге мастера нужно ввести название и описание создаваемой задачи:
Жмем на кнопку Далее (Next) и на следующем шаге выбираем триггер — частоту запуска или событие, которое будет запускать нашу задачу (например, включение компьютера):
Если вы выбрали Ежедневно (Daily) , то на следующем шаге нужно будет выбрать конкретное время, дату начала последовательности и шаг (каждый 2-й день, 5-й день и т.д.):
Следующий шаг — выбираем действие — Запуск программы (Start a program) :
И, наконец, самое интересное — что именно нужно открывать:
-
Щелкнуть правой кнопкой мыши по иконке (ярлычку) запуска Excel на рабочем столе или в панели задач и выбрать команду Свойства (Properties) , а затем в открывшемся окне скопировать путь из строки Target:
Cкопировать получившийся путь, не забыв потом дописать к нему обратный слэш и EXCEL.EXE в конце.
В поле Добавить аргументы (необязательно) (Add arguments (optional)) нужно вставить полный путь к книге с макросом, которую мы хотим открыть.
Когда всё ввели, то жмем Далее и затем Готово (Finish) . Задача должна добавиться в общий список:
Управление созданной задачей удобно осуществлять с помощью кнопок справа. Здесь можно протестировать задачу, запустив её немедленно (Run), не дожидаясь наступления заданного срока. Можно временно деактивировать задачу (Disable), чтобы она перестала выполняться на время, например, вашего отпуска. Ну, и изменить параметры (даты, время, имя файла) тоже всегда можно через кнопку Свойства (Properties) .
Добавляем макрос на открытие файла
Теперь осталось повесить в нашей книге запуск нужного нам макроса на событие открытия файла. Для этого откроем книгу и перейдем в редактор Visual Basic с помощью сочетания клавиш Alt + F11 или кнопки Visual Basic на вкладке Разработчик (Developer) . В открывшемся окне в левом верхнем углу нужно найти наш файл на дереве и двойным щелчком мыши открыть модуль ЭтаКнига (ThisWorkbook) .
Если у вас в редакторе Visual Basic не видно этого окна, то его можно открыть через меню View — Project Explorer.
В открывшемся окне модуля добавим обработчик события открытия книги, выбрав его из выпадающих списков в верхней части Workbook и Open, соответственно:
На экране должна появиться заготовка процедуры Workbook_Open, куда между строчками Private Sub и End Sub и нужно вставить те команды на VBA, которые должны автоматически выполняться при открытии этой книги Excel, когда её по расписанию откроет Планировщик. Вот несколько полезных вариантов для разгона:
-
ThisWorkbook.RefreshAll — обновление всех внешних запросов к данным, запросов Power Query и сводных таблиц. Самый универсальный вариант. Только не забудьте разрешить по умолчанию подключения к внешним данным и обновление связей через Файл — Параметры — Центр управления безопасностью — Параметры центра управления безопасностью — Внешнее содержимое, иначе при открытии книги появится стандартное предупреждение и Excel, ничего не обновляя, будет ждать от вас благословления в виде нажатия на кнопку Включить содержимое (Enable content) :
Если вы хотите, чтобы макрос выполнялся только при открытии файла Планировщиком в 5:00, а не каждый раз при открытии книги пользователем в течение рабочего дня, то имеет смысл добавить проверку на время, например:
If Format(Now, «hh:mm») = «05:00» Then ThisWorkbook.RefreshAll
Вот и всё. Не забудьте сохранить книгу в формате с поддержкой макросов (xlsm или xlsb) и можно смело закрывать Excel и отправляться домой, оставив компьютер включенным. В заданный момент (даже если ПК заблокирован) Планировщик запустит Excel и откроет в нём заданный файл, а наш макрос выполнит запрограммированные действия. А вы будете нежиться в постели, пока ваш тяжелый отчёт автоматически пересчитывается — красота! 🙂
Ссылки по теме
- Что такое макросы, как их использовать, куда вставлять код на Visual Basic в Excel
- Как создать свою надстройку с макросами для Excel
- Как использовать Личную Книгу Макросов (Personal Macro Workbook) как библиотеку для своих макросов в Excel
Источник: www.planetaexcel.ru
Как запустить автоматически программу по времени
Бывает так, что установленных программ и служб, очень много и они либо могут конфликтовать друг с другом, либо же зависимы друг от друга, от последовательности запуска. И может сложиться ситуация, что у вас не будет работать какой либо сервис, только из-за того, что ваша база данных загрузилась, позже, чем загрузился и запустился сервис. Вот в таких случаях настраивается автоматически отложенный запуск. Этим мы с вами сегодня и займемся, я расскажу, что такое отложенный запуск и как его использовать.
Что такое отложенный запуск службы или программы Windows
Прежде, чем мы приступим к изучению нашего вопроса, я бы хотел разобраться в терминологии, чтобы дальше у вас не возникало вопросов.
Автоматический отложенный запуск — это функция операционной системы Windows 7 и выше, вплоть до последней Windows 10 1803, в задачи которой входит:
- Оптимизация и ускорение загрузки ОС Windows, путем перераспределения очередности запуска различных служб
- Оптимизация работы зависимых служб, когда должна быть соблюдена последовательность, что после чего должно выполняться, ниже приведу примеры
Примеры использования отложенного запуска служб
Приведу ряд примеров из своей практики:
- Классическим примером использования возможности запускать службы с некоторой задержкой по времени и меньшим приоритетом, является схема, приложений имеющих базу данных для своей работы. Это могут быть веб сервисы, приложения по типу «Гарант» или «Консультант». Если база данных загрузилась позже службы отвечающей за предоставление пользователю интерфейса, то она работать не будет, я вам недавно рассказывал, о ошибке, что не может быть получена лицензия для запуска программы PlanTracer Pro 7.0
- Второй пример, это связка активного каталога Active Directory и служба DNS, без которой он не может работать. Так как в подавляющем числе случаев, обе роли установлены совместно на контроллере домена, то бывает после перезагрузки выскакивать ошибка 4015, что AD не смогла разрезолвить зону, и связано, это с тем, что DNS служба загрузилась позже, и правильно было бы выставить для запуска активного каталога отложенный запуск службы.
Хочу отметить, что задать отложенный режим запуска вы можете почти для любой службы, и не стоит бояться данной функциональности, вы как продвинутый пользователь или системный администратор, должны знать, о такой возможности. которая в будущем сможет вам помочь избежать проблем с запуском многих программ, написанных кривожопыми программистами
Сочетание отложенного запуска, пониженного приоритета для ЦП, оперативной памяти и фоновых операций ввода/вывода, значительно снижает нагрузку на систему, не препятствуя нормальному входу пользователя. Многие службы Windows, включая фоновую интеллектуальную службу передачи (Background Intelligent Transfer Service, BITS), клиент Центра обновления Windows (Windows Update Client) и службу Windows Media Center, теперь запускаются в отложенном режиме, чтобы ускорить процесс входа в систему при загрузке. Чтобы настроить службу для автоматического запуска в отложенном режиме, следует создать параметр REG_DWORD с именем «DelayedAutoStart» в подразделе конфигурации для данной службы в разделе «HKLMSYSTEMCurrentControlSetServices».
Какие бывают типы запуска служб Windows
Существует четыре типа запуска служб в ОС Windows:
- Автоматический — из названия понятно, что как только запускается «Диспетчер управления службами», то данный службы стартую с максимальным приоритетом
- Вручную — тут пользователю, нужно самому в ручном режиме запускать службу, либо через планировщик заданий.
- Отключена — тут думаю все понятно
- Автоматически (отложенный запуск) — то, о чем мы уже говорили выше.
Как выключить или отключить отложенный запуск служб
Существует два метода, для задания типа запуска сервисов в ОС, как в случае с ошибкой 1068, когда мы искали зависимые службы, можно воспользоваться классической консолью «Службы (Services)», либо же отредактировать реестр Windows.
Самым наверное простым методом задания типа запуска, является оснастка службы. Она открывается, во всех операционных системах Windows одинаково. Нажмите одновременно клавиши WIN и R.
У вас появится окно «Выполнить» в котором вам необходимо ввести:
services.msc
Это системное название mmc оснастки «Службы», полный список системных названий, смотрите по ссылке слева. В итоге у вас откроется вот такая оснастка, содержащая список всех служб, которые есть в вашей системе. Выберите необходимую вам. В моем примере, это будет сервис программы Corsair SSD Toolbox. Щелкаем по ней правым кликом мыши и из контекстного меню выбираем пункт «Свойства».
На вкладке «Общие» в типе запуска, выберите пункт «Автоматически (отложенный запуск)», после чего нажмите применить. После этого, данная служба при загрузке операционной системы будет получать приоритет со значением THREAD_PRIORITY_LOWEST. Как видите все просто.
Если вы отфильтруете столбец по типу запуска, то увидите какие службу, по умолчанию имеют отложенный запуск:
- DNS-клиент
- Брокер системных событий
- Диспетчер подключений Windows
- Клиент групповой политики
- Модули ключей IPsec для обмена ключами в Интернете
- Модуль поддержки NetBIOS через TCP/IP
- Служба сопоставления устройств
- Центр обновления Windows
- Windows Search
- Служба общих сетевых ресурсов проигрывателя Windows
- Центр обновления безопасности
- Защита программного обеспечения
Настройка отложенного запуска через реестр
Как я и говорил выше, все можно сделать, через реестр системы. Для этого есть параметр DelayedAutoStart. Его нужно создать в ветке куста реестра:
HKLMSYSTEMCurrentControlSetServices
Cron — запуск программ пользователя в указанное время
Настраивайте cron-сценарии через панель управления в разделе Планировщик CRON:
Чтобы добавить новые задания, нажмите Создать задание. Откроется интерактивный редактор cron-сценариев:
В поле Команда укажите полный путь до скрипта или команду, которая должна выполняться (для системных команд полный путь можно не указывать). Например, полный путь до файла script.pl, размещенного в корне площадки, будет выглядеть так:
/var/www/u12345/data/www/script.pl
Убедитесь, что файл, который нужно запустить, имеет права на чтение+исполнение (r+x) для владельца файла. Поменять права на нужные можно командой:
chmod 750 script.pl
В поле Описание вы можете сделать пометку, чтобы не забыть что выполняет данный сценарий
Далее выберите периодичность, с которой будет запускаться Ваш сценарий. Есть два варианта настройки — базовый и экспертный.
Базовый — вы выбираете один из перечисленных вариантов в строке Выполнить: каждый час, ежедневно, еженедельно, ежемесячно, ежегодно, при запуске.
Экспертный — гибкая настройка периодичности запуска: минуты, часы, дни месяцев, месяцы, дни недели (0 — воскресенье). Формат ввода: * — все минуты; */n — каждые n минут; n — с началом минуты n; a,b,c-e — с началом минут a,b,c,d,e
Примеры базового режима настройки периодичности запуска:
- выполнять задание по понедельникам в 1 час 15 минут ночи
- выполнять задание 5 апреля в 0 часов 1 минуту каждый год
Примеры экспертного режима настройки периодичности запуска:
- выполнять задание раз в час в 05 минут
- выполнять задание по понедельникам в 1 час 15 минут ночи
- выполнять задание 5 апреля в 0 часов 1 минуту каждый год
Когда все поля будут заполнены (кроме поля Описание, оно необязательное), нажмите Создать.
Отправка отчетов на email о выполнении сценария
Для настройки уведомлений укажите email, на который будут приходить уведомления о выполнении сценария. Для этого перейдите в раздел Планировщик CRON.
Нажмите на кнопку «Настройки» и в поле «Адрес e-mail» укажите email, на который необходимо отправлять уведомления о выполнении сценариев.
В настройках сценария убедитесь, что не стоит галочка напротив поля Не отправлять отчет по e-mail.
Как настроить cron по ssh
Конфигурирование сценариев cron производится через unix shell. Определите, какие программы нужно запустить, и узнайте полные пути к ним на диске сервера. Для этого перейдите с помощью команды cd в каталог, где находится запускаемая программа, и узнайте полный путь к этому каталогу командой pwd. Путь может выглядеть так — /home/u12345/scripts/script.pl.
Убедитесь, что файл имеет права на чтение+исполнение (r+x) для пользователя, от которого вы запускаете скрипт. Поменять права на нужные можно командой chmod 750 script.pl
750 — полные права владельцу файла, группе – чтение и исполнение, остальным – доступ запрещен.
Выполните команду crontab -e – планировщик будет менять план пользователя, от имени которого вы запускаете cron. При первом запуске будет предложен выбор текстового редактора. Выберите редактор с которым вы уже знакомы. Как пример мы рассмотрим текстовый редактор vi. После ввода команды вы окажетесь в текстовом редакторе vi (п), где сможете вводить текст сценария для cron.
- для вставки текста нажмите i, затем вводите текст
- для удаления символов нажмите ESC, а затем наберите x
- для выхода из vi без сохранения изменений нажмите ESC, а затем наберите :q!
- для сохранения и выхода нажмите ESC, а затем наберите :wq
Задания для cron пишутся по одному в строке. После каждой строки, в том числе после последней или единственной, обязательно нажмите enter, иначе задания работать не будут.
Задание выглядит как строка. В начале находятся пять обязательных полей, разделенных пробелами, для указания периодичности задания. Далее следует команда, которую нужно запускать:
поле1 поле2 поле3 поле4 поле5 команда
Значения первых пяти полей:
- минуты — число от 0 до 59
- часы — число от 0 до 23
- день месяца — число от 1 до 31
- номер месяца в году — число от 1 до 12
- день недели — число от 0 до 7 (0-Вс,1-Пн,2-Вт,3-Ср,4-Чт,5-Пт,6-Сб,7-Вс)
Для каждого конкретного параметра можно задать несколько значений через запятую. Например, если в поле «часы» написать 1,4,22, то задание будет запущено в 1 час ночи, в 4 часа утра и в 22 часа. Можно задать интервал — 4-9 будет означать, что программу нужно запускать каждый час в период с 4 до 9 часов включительно.
Символ «*» означает «все возможные значения». Звездочка «*» в поле «часы» будет означать «запускать каждый час». Символ «/» служит для указания дополнительной периодичности задания. Например, «*/3» в поле «часы» означает каждые три часа. Если определены поля «день месяца» и «день недели» (не равны *), то такое задание будет выполняться в каждый указанный день недели независимо от дня месяца.
13 13 10 * 5 /home/u12345/script.pl
такая команда будет выполняться в 13 часов 13 минут каждую пятницу и каждое 10 число месяца, даже если 10 число не совпадет с пятницей.
Так выглядит простейший сценарий cron:
0 */3 * * 2,5 /home/u12345/script.pl
Скрипт /home/u12345/script.pl будет автоматически запускаться каждые три часа во вторник и в пятницу. Введите такой сценарий в редакторе vi, выйдите с сохранением результатов редактирования. Задание будет выполнятся с указанной периодичностью, если вы не допустили ошибок.
Cron сообщает об ошибках в сценарии:
/tmp/crontab.xxxxxxx: 1 строка, 9 символов
crontab: installing new crontab
«/tmp/crontab.xxxxxxx»:1: bad minute
crontab: errors in crontab file, can’t install
Do you want to retry the same edit?
Исправьте ошибки и попробуйте сохранить задание опять.
Посмотреть список уже установленных в cron сценариев можно командой crontab -l:
-bash-2.05b$ crontab -l
0 */3 * * 2,5 /home/u12345/script.pl
Если вам нужно запускать какую-то программу один раз в день, выбирайте ночное время. С с 2 до 8 часов ночи нагрузка на серверы минимальна. Если программа требует больших ресурсов, ночью она выполнится быстрее, чем днём.
Примеры использования cron
- выполнять задание раз в час в 0 минут — 0 */1 * * * /home/u12345/script.pl
- выполнять задание каждые три часа в 0 минут — 0 */3 * * * /home/u12345/script.pl
- выполнять задание по понедельникам в 1 час 15 минут ночи — 15 1 * * 1 /home/u12345/script.pl
- выполнять задание 5 апреля в 0 часов 1 минуту каждый год — 1 0 5 4 * /home/u12345/script.pl
- выполнять задание ежемесячно 1 числа в 6 часов 10 минут — 10 6 1 * * /home/u12345/script.pl
Как запустить PHP-скрипт по расписанию
Запускайте скрипты на языке PHP в указанное время с желаемой периодичностью с помощью PHP-CLI интерпретатора.Так может выглядеть команда на запуск скрипта script.php — /usr/bin/php -q $HOME/script.php> /dev/null 2> /dev/null 2> /dev/null 2>https://firstvds.ru/technology/cron-zapusk-programm-polzovatelya-v-ukazannoe-vremya» target=»_blank»]firstvds.ru[/mask_link]