Запуск файла excel по расписанию

Запуск макроса по времени

Весьма частый случай на практике: вам нужно запускать один или несколько ваших макросов в заданное время или с определенной периодичностью. Например, у вас есть большой и тяжелый отчет, который обновляется полчаса и вы хотели бы запускать обновление за полчаса до вашего прихода на работу утром. Или у вас есть макрос, который должен делать автоматическую рассылку сотрудникам с заданной периодичностью. Или, работая со сводной таблицей, вы хотите, чтобы она обновлялась «на лету» каждые 10 секунд и т.д.

Давайте разберемся с тем, какие в Excel и Windows есть возможности для реализации подобного.

Запуск макроса с заданной частотой

Для этого проще всего использовать встроенный в 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

Давайте разберемся что здесь что.

Для начала, нам нужна переменная, где будет храниться время следующего запуска нашего макроса — я назвал её TimeToRun. Обратите внимание, что содержимое этой переменной должно быть доступно всем нашим последующим макросам, поэтому её надо сделать глобальной, т.е. объявить в самом начале модуля до первого Sub.

Дальше идет наш главный макрос MyMacro, который будет выполнять основную задачу — пересчитывать книгу с помощью метода Application.Calculate. Чтобы было нагляднее, я добавил на лист в ячейку А1 формулу =ТДАТА(), которая выводит дату и время — при пересчете её содержимое будет обновляться прямо у нас на глазах (только включите отображение секунд в формате ячейки). Для дополнительного веселья я добавил в макрос еще и команду заливки ячейки А1 случайно выбранным цветом (код цвета — это целое числов в диапазоне 0..56, которое генерит функция Rnd и округляет до целого числа функция Int).

Заготовка

Макрос NextRun добавляет к предыдущему значению TimeToRun еще 3 секунды и затем назначает следующий запуск главного макроса MyMacro на это новое время. Само-собой, на практике можно использовать любые другие нужные вам временные интервалы, задавая аргументы функции TimeValue в формате «чч:мм:сс».

Ну и, наконец, просто для удобства добавлены еще макросы запуска последовательности Start и её завершения Finish. В последнем из них для прерывания последовательности используется четвёртый аргумент метода OnTime равный False.

Итого, если запустить макрос Start, то вся эта карусель завертится, и мы увидим на листе вот такую картину:

Запуск макроса через 3 сек

Остановить последовательность можно, запустив, соответственно макрос Finish. Для удобства можно обоим макросам назначить сочетания клавиш, используя команду Макросы — Параметры на вкладке Разработчик (Developer — Macros — Options).

Запуск макроса по расписанию

Само-собой, всё описанное выше возможно только в том случае, если у вас запущен 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):

Выбираем действие - старт программы

И, наконец, самое интересное — что именно нужно открывать:

Выбираем программу и файл

В поле Программа или сценарий (Program/script) нужно ввести путь к Microsoft Excel как к программе, т.е. непосредственно к исполняемому файлу Excel. На разных компьютерах с разными версиями Windows и Office этот файл может лежать в разных папках, поэтому вот вам несколько способов, как можно узнать его местоположение:

  • Щелкнуть правой кнопкой мыши по иконке (ярлычку) запуска Excel на рабочем столе или в панели задач и выбрать команду Свойства (Properties), а затем в открывшемся окне скопировать путь из строки Target:

    Где лежит excel.exe                      Путь к файлу EXCEL.EXE

  • Открыть любую книгу Excel, затем открыть Диспетчер задач (Task Manager) нажатием Ctrl+Alt+Del и, щелкнув правой кнопкой мыши по строке Microsoft Excel, выбрать команду Свойства (Properties). В открывшемся окне можно скопировать путь, не забыв потом дописать к нему обратный слэш и EXCEL.EXE в конце:

    Excel в Диспетчере задач Windows              Свойства процесса Excel.exe

  • Открыть Excel, открыть редактор Visual Basic сочетанием клавиш Alt+F11, открыть панель Immediate сочетанием Ctrl+G, ввести в неё команду:
    ? Application.Path
    … и нажать на Enter

    Путь к Excel через VBA
    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):

    Предупреждение о подключении к внешним данным

  • ActiveWorkbook.Connections(«Имя_Соединения»).Refresh — обновление данных по соединению Имя_Соединения.
  • Sheets(«Лист5«).PivotTables(«СводнаяТаблица1«).PivotCache.Refresh — обновление отдельно взятой сводной таблицы с именем СводнаяТаблица1 на листе Лист5.
  • Application.Calculate — пересчет всех открытых книг Excel.
  • Application.CalculateFullRebuild — принудительный пересчет всех формул и перестроение всех зависимостей между ячейками во всех открытых книгах (равносильно повторному вводу всех формул).
  • Worksheets(«Отчет»).PrintOut — распечатать лист Отчет.
  • Call MyMacro — запустить макрос с именем MyMacro.
  • ThisWorkbook.Save — сохранить текущую книгу
  • ThisWorkbooks.SaveAs «D:АрхивОтчет » & Replace(Now, «:», «-«) & «.xlsx» — сохранить книгу в папку D:Архив под именем Отчет с добавлением к имени даты и времени.

Если вы хотите, чтобы макрос выполнялся только при открытии файла Планировщиком в 5:00, а не каждый раз при открытии книги пользователем в течение рабочего дня, то имеет смысл добавить проверку на время, например:

If Format(Now, "hh:mm") = "05:00" Then ThisWorkbook.RefreshAll

Вот и всё. Не забудьте сохранить книгу в формате с поддержкой макросов (xlsm или xlsb) и можно смело закрывать Excel и отправляться домой, оставив компьютер включенным. В заданный момент (даже если ПК заблокирован) Планировщик запустит Excel и откроет в нём заданный файл, а наш макрос выполнит запрограммированные действия. А вы будете нежиться в постели, пока ваш тяжелый отчёт автоматически пересчитывается — красота! :)

Ссылки по теме

  • Что такое макросы, как их использовать, куда вставлять код на Visual Basic в Excel
  • Как создать свою надстройку с макросами для Excel
  • Как использовать Личную Книгу Макросов (Personal Macro Workbook) как библиотеку для своих макросов в Excel

Содержание

  1. Трюк №82. Как запустить макрос в определенное время
  2. Developing.ru
  3. Запуск файлов Excel через «Назначенные задания» Windows.
  4. Как установить повторяющееся расписание для файла xlsm с помощью планировщика задач Windows
  5. 5 ответов
  6. Планировщик задач Windows — откройте файл Excel «Как вы хотите открыть этот файл»
  7. 3 ответа
  8. Excel Store
  9. Запуск заданий по расписанию в Windows

Трюк №82. Как запустить макрос в определенное время

Часто вы, наверняка, думаете, как было бы удобно запускать макрос в предопределенное время или через указанные интервалы. К счастью, в Excel предусмотрен метод VBA, который делает это возможным.

При помощи метода Application.OnTime можно запускать макрос автоматически, но сначала необходимо провести небольшую настройку. Предположим, есть макрос, который вы хотите запускать каждый день в 15:00 (3:00 p.m.). Сначала нужно определить, как заставить выполниться метод OnTime. Это можно сделать с помощью события Workbook_0pen в частном модуле для объекта Workbook.

В Windows самый быстрый способ попасть в частный модуль объекта Workbook (ThisWorkbook, Эта Книга) — правой кнопкой мыши щелкнуть значок Excel рядом с меню Файл (File) и в контекстном меню выбрать команду Исходный текст (View Code). (На Macintosh откройте VBE и затем откройте модуль объекта Workbook в окне Project.) Введите код из листинга 7.2.

//Листинг 7.2 Private Sub Workbook Open () Application.OnTime T1meValue(«15:00:00»). «MyMacro» End Sub

Вместо MyMacro следует подставить имя макроса, который вы хотите выполнить. Он должен находиться в стандартном модуле и содержать метод OnTime, как показано в листинге 7.3.

//Листинг 7.3 Sub MyMacro () Application.OnTime T1meValue(«15:00:00»), «MyMacro» ‘ВАШ КОД End Sub

Процедура MyMacro будет запускаться каждый день в 15:00, пока Excel остается открытым.

Теперь предположим, вы хотите выполнять MyMacro каждые 15 минут после открытия книги. И снова вы будете запускать процедуру во время открытия книги, поэтому правой кнопкой мыши щелкните значок Excel рядом с меню Файл (File), выберите команду Исходный текст (View Code) и введите код из листинга 7.4.

//Листинг 7.4 Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.OnTime dTime. «MyMacro». . False End Sub Private Sub Workbook_Open() Application.OnTime Now + TimeValue(«00:15:00»), «MyMacro» End Sub

В любом стандартном модуле (который можно открыть командой Insert → Module) введите код, приведенный в листинге 7.5.

//Листинг 7.5 Public dTime As Date Sub МуМасrо() dTime = Now + TimeValue(«00:15:00») Application.OnTime dTime, «MyMacro» ‘ВАШ КОД End Sub

Обратите внимание, что.вы передаете значение времени, равное 15 минутам, общей (public) переменной dTime. Это нужно, чтобы вы могли отменить метод OnTime в событии Workbook_BeforeC1ose, присвоив дополнительному аргументу Schedule значение Ложь (False). По умолчанию его значение равно Истина (True), поэтому, изменив значение на Ложь (False), вы приказываете Excel отменить метод OnTime, настроенный на выполнение в указанное время.

Если не передать время в переменную, Excel не будет знать, какой метод OnTime нужно отменить, так как значение Now + TimeValue(«00:15:00») не является статическим, но становится статическим, когда передается в переменную. Если вы не присвоите дополнительному аргументу Schedule значение Ложь (False), рабочая книга будет автоматически открываться каждые 15 минут, после того как вы закроете ее, и выполнять макрос MyMacro.

Источник

Developing.ru

Запуск файлов Excel через «Назначенные задания» Windows.

Довольно часто это использую в работе,
но кое-что до сих пор в этой системе осталось загадкой.

1. При установке режима выполнения задания «При загрузке компьютера»
файл XLS не открывается, на некоторых станциях откроется один Excel и все.
Планировщик упорно пишет в столбце состояния «Выполняется. «

2. Если задание выполняю по времени, файл нормально открывается, но виде окна,
почему-то не на весь экран, как мне хотелось бы.
Что делаю — расширяю окно приблизительно на весь экран, либо пишу при старте.

А если открывать не XLS файл, а именно Excel и передавать файл в командной строке?

Что касается окна, то попробуйте еще дополнительно использовать команду START.

START /MIN EXCEL — запускает excel в свернутом состоянии
START /MAX EXCEL — в развернутом
START EXCEL — по умолчанию (определяется самим приложением)

Naeel Maqsudov, спасибо,
В общем попробовал кое-что, получились следующее.

1. Для запуска файла .xls при старте системы,

можно воспользоваться Автозагрузкой (о чем доходчиво написано в справке «Использование ключей автозагрузки при запуске Excel»
Создаем в папке Автозагрузка ярлык с указанием объекта —
«C:Program FilesMicrosoft OfficeOfficeEXCEL.EXE» C:temp1Книга123.xls,
там же можно поставить опцию Окно — «Развернутое на весь экран»

2. Для запуска файла .xls по времени

можно воспользоваться «Назначенными заданиями» Windows, при этом в качестве объекта запускать
— либо сам файл .xls, но без возможности управлять окном,
— либо bat-файл с ключами команды START, если bat-ник лежит в той же папке, где и файл .xls, проходит следующий вариант:
START /MAX Книга123.xls

Но если файл .xls все равно содержит макросы, то чтобы не создавать все эти ярлыки и bat-файлы, лучше макросом при старте выполнять:

Источник

Как установить повторяющееся расписание для файла xlsm с помощью планировщика задач Windows

У меня есть файл с включенным макросом xlsx . Как я могу установить это в диспетчере задач, чтобы каждый день в 9 утра диспетчер задач открывал книгу, запускал макрос и закрывал книгу.

Пока я использую

Но я понимаю, что держать файл xlsm открытым неудобно

5 ответов

Лучше использовать vbs, как вы указали.

  1. Создайте простой vbs , который представляет собой текстовый файл с расширением .vbs (см. Пример кода ниже)
  2. Используйте планировщик задач для запуска vbs
  3. Используйте vbs , чтобы открыть workbook в запланированное время, а затем либо:
    • используйте событие Private Sub Workbook_Open() в модуле ThisWorkbook для запуска кода при открытии файла
    • более надежно (поскольку макросы могут быть отключены при открытии), используйте Application.Run в vbs для запуска макроса

См. Этот пример более позднего подхода на странице Запуск Excel в планировщике задач Windows

Три важных шага — как составить расписание для файла excel.xls (m)

просто :

  1. убедитесь, что файл .vbs правильный
  2. правильно установите вкладку Действие в Планировщике задач
  3. не включайте «Запускать вне зависимости от того, вошел пользователь в систему или нет»

ПОДРОБНЕЕ…

  1. Вот пример файла .vbs :
  1. На вкладке «Действие» (планировщик задач) :

Установить Program / script: = C: Windows System32 cscript.exe

Установить Добавить аргументы (необязательно): = C: MyVbsFile.vbs

  1. Наконец, не включайте «Запускать, независимо от того, вошел ли пользователь в систему» .

Это должно сработать.

Я сослался на блог Кима за то, что он сделал это, и он отлично работал у меня. См. блог

Автоматическое выполнение макроса может быть выполнено с помощью файла сценария VB, который запускается планировщиком задач Windows в указанное время.

Не забудьте заменить «YourWorkbook» на имя книги, которую вы хотите открыть, и заменить «YourMacro» на имя макроса, который вы хотите запустить.

См. Файл сценария VB (просто назвал его RunExcel.VBS):

Вы можете протестировать этот сценарий VB из командной строки:

После того, как вы протестировали файл сценария VB и книгу на предмет того, что вы хотите, вы можете использовать планировщик задач Microsoft (Панель управления -> Инструменты администрирования -> Планировщик задач) для автоматического выполнения cscript.exe RunExcel.vbs для ты.

Обратите внимание, что путь к макросу должен быть в правильном формате и заключен в одинарные кавычки, например:

Код ниже скопирован из -> Здесь

Во-первых, вы должны сохранить свою рабочую книгу как рабочую книгу с поддержкой макросов. Значит, это должен быть xlsm , а не xlsx . В противном случае Excel отключит макрос из-за того, что макрос не включен.

Установите свой vbscript (C: excel tester.vbs). Пример подменю «test ()» должен находиться в ваших модулях в документе Excel.

Затем установите свое расписание, дайте ему имя и имя пользователя / пароль для автономного доступа.

Затем вы должны установить свои действия и триггеры.

Установите свое расписание (триггер)

Действие, настройте vbscript для открытия с помощью Cscript.exe, чтобы он выполнялся в фоновом режиме и не зависал при обработке ошибок, включенной vbcript.

Я нашел гораздо более простой способ и надеюсь, что он сработает для вас. (с использованием Windows 10 и Excel 2016)

Создайте новый модуль и введите следующий код: Sub auto_open () ‘Макрос для запуска (не обязательно в этом модуле, только в этой книге End Sub

Настройте задачу через планировщик задач и установите «программу для запуска как» Excel (я нашел ее в C: Program Files (x86) Microsoft Office root Office16). Затем установите «Добавить аргументы (необязательно): в качестве пути к файлу книги с поддержкой макросов. Помните, что и путь к Excel, и путь к книге должны быть заключены в двойные кавычки.

* См. Пример из Rich, отредактированный сообществом, для изображения экрана планировщика Windows.

Источник

Планировщик задач Windows — откройте файл Excel «Как вы хотите открыть этот файл»

Я пытаюсь настроить базовую задачу в планировщике задач Windows, которая открывает файл Excel каждый день. Раньше я делал это успешно, но по какой-то причине в ОС Windows Server 2012, которую я использую, когда я пытаюсь открыть файл, я получаю запрос с помощью , как вы хотите открыть этот тип файла?

Есть ли способ автоматически выбрать Excel в качестве программы, используемой для запуска файла для этой задачи?

3 ответа

Вам необходимо указать полный путь к исполняемому файлу приложения Excel.exe, а также к книге, которую нужно открыть.

Расположение программ Office (64-разрядный Office на 64-разрядной версии Windows Server 2012)

  • Microsoft Office 2013
    «% PROGRAMFILES% Microsoft Office Office15 EXCEL.EXE»
  • Microsoft Office 2010
    «% PROGRAMFILES% Microsoft Office Office14 EXCEL.EXE»
  • Microsoft Office 2007
    «% PROGRAMFILES% Microsoft Office Office12 EXCEL.EXE»
  • Microsoft Office 2003
    «% PROGRAMFILES% Microsoft Office Office11 EXCEL.EXE»
  • Microsoft Word 2002
    «% PROGRAMFILES% Microsoft Office Office10 EXCEL.EXE»
  • Microsoft Word 2000
    «% PROGRAMFILES% Microsoft Office Office EXCEL.EXE»

Для 32-разрядной версии Office в 64-разрядной операционной системе замените% PROGRAMFILES (x86)% на% PROGRAMFILES%.

Пример командной строки:

Для ясности, это означает, что в графическом интерфейсе планировщика заданий вам необходимо указать путь к файлу EXCEL.EXE в строке программы / скрипта, а путь к настраиваемому файлу Excel, который вы хотите открыть, в строке аргументов.

Дополнительные параметры командной строки доступны для открытия только для чтения и т. Д. См. Параметры командной строки для Excel .

Это решило это для меня:

Три важных шага — как составить расписание для файла excel.xls (m)

просто :

  1. убедитесь, что файл .vbs правильный
  2. правильно установите вкладку Действие в Планировщике задач
  3. не включайте «Запускать вне зависимости от того, вошел пользователь в систему или нет»

ПОДРОБНЕЕ…

Вот пример файла .vbs:

На вкладке «Действие» (планировщик задач):

Установить Program / script: = C: Windows System32 cscript.exe

Установить Добавить аргументы (необязательно): = C: MyVbsFile.vbs

Наконец, не включайте «Запускать, независимо от того, вошел ли пользователь в систему».

Это должно сработать. Многие люди также нуждаются в следующих двух папках, созданных на их машинах:

Очевидно, Excel нужны эти папки, если он не работает в интерактивном режиме. Создайте обе папки, даже если вы работаете в 64-битной ОС.

Источник

Excel Store

Запуск заданий по расписанию в Windows

Краткое описание

В статье рассказывается о возможностях и способах применения стандартного планировщика Windows в связке с преднастроенными макросами и файлами Excel.

Подробное описание

Иногда бывает необходимо, чтобы компьютер выполнял определенные действия без вашего участия. Например, раз в сутки копировался какой-то файл, что-то удалялось, проверялось, запускался некий exe-файл, отправлялись письма, всплывали уведомления и тп. Можно было бы написать vba-макрос, который бы все это делал (макрос для Outlook, Excel и тп). Но чтобы такой макрос работал, нужно держать открытым тот же Outlook, Excel и тд.

Есть решение гораздо проще и удобнее — стандартный планировщик заданий Windows.

1. Открываете планировщик:

2. Нажимаете «Создать простую задачу»:

3. Вводите необходимые параметры (имя задания, время, частота и периодичность запуска и некоторые др.) и указываете, что нужно сделать:

Если выбрать пункт «Запустить программу», то на следующем шаге вам будет предложено выбрать, какую программу или сценарий вы хотите запустить. Кроме того, вы также можете указать дополнительные аргументы запуска:

Именно пункт «Запустить программу» дает нам очень много свободы действий, ведь в качестве скрипта или программы может быть все, что угодно: vbs/cmd скрипт, excel файл, любое другое приложение. Плюс, можно задать дополнительные параметры (аргументы) запуска.

И что важно, наша операционная система сама будет отслеживать время и необходимость запуска без дополнительных усилий с нашей стороны. Требование одно — должен быть включен компьютер. Если наступило время выполнения задачи, а ПК выключен, то задача будет исполнена, когда компьютер заработает (этот пункт можно настроить: либо игнорировать пропущенную задачу, либо запускать после включения ПК).

Вот такая вроде простая, но многими не востребованная вещь.

Для продвинутых пользователей есть возможность настройки планировщика из командной строки. Кстати, настройка из командной строки может быть очень полезна, когда вы, например, выполняете какой-то макрос в экселе и вам требуется выполнить ряд отложенных действий, а потом снова запустить макрос на продолжение, но уже со следующего этапа. С планировщиком это решается очень просто:

  1. макрос выполняет свою первую часть,
  2. завершает первую часть, через командную строку создает отложенное задание и прекращает свою работу (вплоть до закрытия файла excel),
  3. планировщик отслеживает время запуска нужного задания, запускает задание (например, проверка наличия файла в сети),
  4. по окончании проверки запускает следующее задание — запуск нашего исходного макроса, но уже со второго этапа и с полученным значениям статуса выполнения нашего отложенного задания.

И так сколько угодно раз, исходя из настроек вашего макроса и параметров планировщика.

Источник

Three important steps — How to Task Schedule an excel.xls(m) file

simply:

  1. make sure the .vbs file is correct
  2. set the Action tab correctly in Task Scheduler
  3. don’t turn on «Run whether user is logged on or not»

IN MORE DETAIL…

Here is an example .vbs file:

'
'   a .vbs file is just a text file containing visual basic code that has the extension renamed from .txt  to .vbs

 'Write Excel.xls  Sheet's full path here
 strPath = "C:RodsData.xlsm" 

'Write the macro name - could try including module name
strMacro = "Update" '    "Sheet1.Macro2" 

'Create an Excel instance and set visibility of the instance
Set objApp = CreateObject("Excel.Application") 
objApp.Visible = True   '   or False 

'Open workbook; Run Macro; Save Workbook with changes; Close; Quit Excel
Set wbToRun = objApp.Workbooks.Open(strPath) 
objApp.Run strMacro     '   wbToRun.Name & "!" & strMacro 
wbToRun.Save 
wbToRun.Close 
objApp.Quit 

'Leaves an onscreen message!
MsgBox strPath & " " & strMacro & " macro and .vbs successfully completed!",         vbInformation 
'

In the Action tab (Task Scheduler):

set Program/script: = C:WindowsSystem32cscript.exe

set Add arguments (optional): = C:MyVbsFile.vbs

Finally, don’t turn on «Run whether user is logged on or not».

That should work. Many people also need the following two folders created on their machine:

32Bit:

C:WindowsSystem32configsystemprofileDesktop  

64Bit:

C:WindowsSysWOW64configsystemprofileDesktop

Apparently Excel needs these folders if it’s not run interactively. Create both folders even if you are on a 64-bit OS.

Я пытаюсь настроить базовую задачу в планировщике задач Windows, которая открывает файл Excel каждый день. Раньше я делал это успешно, но по какой-то причине в ОС Windows Server 2012, которую я использую, когда я пытаюсь открыть файл, я получаю запрос с помощью , как вы хотите открыть этот тип файла? < / em>

Task Scheduler Example

Есть ли способ автоматически выбрать Excel в качестве программы, используемой для запуска файла для этой задачи?

3 ответа

Лучший ответ

Вам необходимо указать полный путь к исполняемому файлу приложения Excel.exe, а также к книге, которую нужно открыть.

Расположение программ Office (64-разрядный Office на 64-разрядной версии Windows Server 2012)

  • Microsoft Office 2013
    «% PROGRAMFILES% Microsoft Office Office15 EXCEL.EXE»
  • Microsoft Office 2010
    «% PROGRAMFILES% Microsoft Office Office14 EXCEL.EXE»
  • Microsoft Office 2007
    «% PROGRAMFILES% Microsoft Office Office12 EXCEL.EXE»
  • Microsoft Office 2003
    «% PROGRAMFILES% Microsoft Office Office11 EXCEL.EXE»
  • Microsoft Word 2002
    «% PROGRAMFILES% Microsoft Office Office10 EXCEL.EXE»
  • Microsoft Word 2000
    «% PROGRAMFILES% Microsoft Office Office EXCEL.EXE»

Для 32-разрядной версии Office в 64-разрядной операционной системе замените% PROGRAMFILES (x86)% на% PROGRAMFILES%.

Пример командной строки:

"%PROGRAMFILES%Microsoft OfficeOffice14EXCEL.EXE" "C:UsersuserDocumentsMyWorkbook.xlsx"

Для ясности, это означает, что в графическом интерфейсе планировщика заданий вам необходимо указать путь к файлу EXCEL.EXE в строке программы / скрипта, а путь к настраиваемому файлу Excel, который вы хотите открыть, в строке аргументов.

Дополнительные параметры командной строки доступны для открытия только для чтения и т. Д. См. Параметры командной строки для Excel .


5

TylerH
25 Мар 2019 в 16:46

Это решило это для меня:

32 бит:

C:WindowsSystem32configsystemprofileDesktop

64 бит:

C:WindowsSysWOW64configsystemprofileDesktop


0

Draken
23 Май 2017 в 14:07

Три важных шага — как составить расписание для файла excel.xls (m)

просто :

  1. убедитесь, что файл .vbs правильный
  2. правильно установите вкладку Действие в Планировщике задач
  3. не включайте «Запускать вне зависимости от того, вошел пользователь в систему или нет»

ПОДРОБНЕЕ…

Вот пример файла .vbs:

'
'   a .vbs file is just a text file containing visual basic code that has the extension renamed from .txt  to .vbs

 'Write Excel.xls  Sheet's full path here
 strPath = "C:RodsData.xlsm" 

'Write the macro name - could try including module name
strMacro = "Update" '    "Sheet1.Macro2" 

'Create an Excel instance and set visibility of the instance
Set objApp = CreateObject("Excel.Application") 
objApp.Visible = True   '   or False 

'Open workbook; Run Macro; Save Workbook with changes; Close; Quit Excel
Set wbToRun = objApp.Workbooks.Open(strPath) 
objApp.Run strMacro     '   wbToRun.Name & "!" & strMacro 
wbToRun.Save 
wbToRun.Close 
objApp.Quit 

'Leaves an onscreen message!
MsgBox strPath & " " & strMacro & " macro and .vbs successfully completed!",         vbInformation 
'

На вкладке «Действие» (планировщик задач):

Установить Program / script: = C: Windows System32 cscript.exe

Установить Добавить аргументы (необязательно): = C: MyVbsFile.vbs

Наконец, не включайте «Запускать, независимо от того, вошел ли пользователь в систему».

Это должно сработать. Многие люди также нуждаются в следующих двух папках, созданных на их машинах:

32 бит:

C:WindowsSystem32configsystemprofileDesktop  

64 бит:

C:WindowsSysWOW64configsystemprofileDesktop

Очевидно, Excel нужны эти папки, если он не работает в интерактивном режиме. Создайте обе папки, даже если вы работаете в 64-битной ОС.


0

TylerH
7 Апр 2020 в 17:25

Ozon

1

30.10.2011, 10:49. Показов 2500. Ответов 7


Студворк — интернет-сервис помощи студентам

Подскажите пожалуйста, как можно реализовать автоматический запуск Personal.xls? То есть такое дело: в определенное время запускается Excel и вместе с ним Personal.xls. Обрабатывает данные и закрывается. На следующий день эта процедура повторяется снова без чьего либо участия!!!

Silver

30.10.2011, 10:59

2

Запуск можно организовать через «Назначенные задания» (Sheduled Tasks) указав
в качестве исполняемого файла EXCEL с необходимым файлом *.xls
в командной строке.
Завершить работу должен сам xls-файл.

Ozon

30.10.2011, 13:37

3

А может подскажешь как прописать *.xls файл в командной строке, если не трудно, потому что пробовал я и запускать сам файл, и через датовский на него путь указывать, ну никак — excel запускается, а файл — нет!

Silver

30.10.2011, 13:57

4

«C:Program FilesMicrosoft OfficeOFFICE11EXCEL.EXE» /r /e «C:Personal.exe»

Ozon

30.10.2011, 15:15

5

Видимо у меня руки не так растут. Не получается ни в какую!

Silver

30.10.2011, 16:36

6

Нужно проверить:
1. Путь до EXCEL. У меня стоит Office2003, поэтому путь:
C:Program FilesMicrosoft OfficeOFFICE11EXCEL.EXE

2. Ключи /r /e можно опустить. Первый открывает файл только на чтение,
второй подавляет заставку (на кой она нам?) Excel-а при старте.

3. Полный путь до Personal.exe ( «C:Personal.exe» указан в качестве примера!)

Попробовать запустить из командной строки. Почитать на что ругается!

Comanche

30.10.2011, 17:25

7

2[bold]Silver[/bold]:
м.б. C:Personal.[bold]xls[/bold], а не C:Personal.exe ?!

Silver

30.10.2011, 18:32

8

Конечно-же «C:Personal.xls» !!!

Naeel Maqsudov, спасибо,
В общем попробовал кое-что, получились следующее…

1. Для запуска файла .xls при старте системы,

можно воспользоваться Автозагрузкой (о чем доходчиво написано в справке «Использование ключей автозагрузки при запуске Excel»
Создаем в папке Автозагрузка ярлык с указанием объекта —
«C:Program FilesMicrosoft OfficeOfficeEXCEL.EXE» C:temp1Книга123.xls,
там же можно поставить опцию Окно — «Развернутое на весь экран»

2. Для запуска файла .xls по времени

можно воспользоваться «Назначенными заданиями» Windows, при этом в качестве объекта запускать
— либо сам файл .xls, но без возможности управлять окном,
— либо bat-файл с ключами команды START, если bat-ник лежит в той же папке, где и файл .xls, проходит следующий вариант:
START /MAX Книга123.xls

Но если файл .xls все равно содержит макросы, то чтобы не создавать все эти ярлыки и bat-файлы, лучше макросом при старте выполнять:

Private Sub Workbook_Open()
Application.WindowState = xlMaximized
End Sub

Во вложении к статье — файл VBS скрипта, который при его запуске выполнит следующие действия:

1) подключится к приложению MS Excel (а если Excel не запущен, — то запустит его)
2) проверит, запущена ли надстройка (в данном примере — надстройка для обработки прайсов),
и если не запущена — то запустит её
3) запустит макрос с данным названием из этой надстройки (аналог нажатия кнопки в меню надстройки «Обработать все настроенные прайс-листы»)
4) по завершении обработки прайсов, закроет надстройку и сам Excel (если они были запущены скриптом)

После того, как скачаете скрипт, откройте его текстовым редактором (Блокнот),
и отредактируйте 2 строки, где заданы имя и путь к файлу надстройки:

' здесь задаём полный путь к файлу запускаемой надстройки
AddinPath = "C:ПапкаПодпапкаUnification.xla"
' и имя файла надстройки
AddinFilename = "Unification.xla"   

Укажите тут свой путь и имя файла надстройки, после чего сохраните изменения в файле скрипта.

Кроме того, надо подготовить программу «Прайс-лист» к программному запуску обработки
(чтобы избежать диалоговых окон)
Для этого:
1) в настройках программы, поставьте галочку
«Обрабатывать прайс-листы согласно настроек по-умолчанию»
2) в настройках на вкладке «Настройки по-умолчанию» укажите, какую конфигурацию вывода использовать
3) НЕОБЯЗАТЕЛЬНО: в настройках выбраной конфигурации вывода, снимите галочку «Открывать файл после создания»

Если надо обработать только один прайс-лист, то замените строку кода
XL.Run "ProcessOnlyPriceListsWithConfigurations"
на
XL.Run "ProcessPriceFromMenu", "c:foldersubfolderПолный путь к обрабатываемому файлу.xls"

Код прикреплённого к статье скрипта:

' © 2016 ExcelVBA.ru

' здесь задаём полный путь к файлу запускаемой надстройки
AddinPath = "D:ПРОЕКТЫ- Мои проекты - ExcelUnificationUnification.xla"
' и имя файла надстройки
AddinFilename = "Unification.xla"       
 
On Error Resume Next
 
' пробуем подключиться к запущенному Excel
Set XL = GetObject(, "Excel.Application")
XLopenedByScript = False
If XL Is Nothing Then
	' если не запущен - то запускаем Excel
	Set XL = CreateObject("Excel.Application")
	XLopenedByScript = True
	If XL Is Nothing Then
		MsgBox "Не удалось запустить приложение MS Excel", vbCritical, "Скрипт автозапуска"
		Wscript.Quit
	End If
End If
 
 
' пытаемся найти надстройку среди запущенных файлов
Set WB = XL.Workbooks(AddinFilename)
AddInOpenedByScript = False
If WB Is Nothing Then
	' если не запущена надстройка, - запускаем её
	Set WB = XL.Workbooks.Open(AddinPath)
	AddInOpenedByScript = True
	If WB Is Nothing Then
		MsgBox "Не удалось запустить надстройку «" & AddinFilename & "»", vbCritical, "Скрипт автозапуска"
		Wscript.Quit
	End If
End If
 
' запускаем макрос
XL.Run "ProcessOnlyPriceListsWithConfigurations"
' в данном случае это макрос ProcessOnlyPriceListsWithConfigurations из надстройки Unification
' (этот макрос запустит автоматическую обработку всех прайс-листов, для которых назначены обработчики)

 
' здесь можно прописать код закрытия надстройки и Excel (но можно ничего и не закрывать)
If AddInOpenedByScript Then WB.Close False ' закрываем надстройку, если мы её открыли скриптом
If XLopenedByScript Then XL.Quit ' закрываем Excel, только если мы его сами запустили скриптом
  • 6313 просмотров

Часто вы, наверняка, думаете, как было бы удобно запускать макрос в предопределенное время или через указанные интервалы. К счастью, в Excel предусмотрен метод VBA, который делает это возможным.

При помощи метода Application.OnTime можно запускать макрос автоматически, но сначала необходимо провести небольшую настройку. Предположим, есть макрос, который вы хотите запускать каждый день в 15:00 (3:00 p.m.). Сначала нужно определить, как заставить выполниться метод OnTime. Это можно сделать с помощью события Workbook_0pen в частном модуле для объекта Workbook.

В Windows самый быстрый способ попасть в частный модуль объекта Workbook (ThisWorkbook, Эта Книга) — правой кнопкой мыши щелкнуть значок Excel рядом с меню Файл (File) и в контекстном меню выбрать команду Исходный текст (View Code). (На Macintosh откройте VBE и затем откройте модуль объекта Workbook в окне Project.) Введите код из листинга 7.2.

1
2
3
4
//Листинг 7.2
Private Sub Workbook Open ()
	Application.OnTime T1meValue("15:00:00"). "MyMacro"
End Sub

Вместо MyMacro следует подставить имя макроса, который вы хотите выполнить. Он должен находиться в стандартном модуле и содержать метод OnTime, как показано в листинге 7.3.

1
2
3
4
5
//Листинг 7.3
Sub MyMacro ()
	Application.OnTime T1meValue("15:00:00"), "MyMacro"
'ВАШ КОД
End Sub

Процедура MyMacro будет запускаться каждый день в 15:00, пока Excel остается открытым.

Теперь предположим, вы хотите выполнять MyMacro каждые 15 минут после открытия книги. И снова вы будете запускать процедуру во время открытия книги, поэтому правой кнопкой мыши щелкните значок Excel рядом с меню Файл (File), выберите команду Исходный текст (View Code) и введите код из листинга 7.4.

1
2
3
4
5
6
7
8
//Листинг 7.4
Private Sub Workbook_BeforeClose(Cancel As Boolean)
	Application.OnTime dTime. "MyMacro". . False
End Sub
 
Private Sub Workbook_Open()
	Application.OnTime Now + TimeValue("00:15:00"), "MyMacro"
End Sub

В любом стандартном модуле (который можно открыть командой Insert → Module) введите код, приведенный в листинге 7.5.

1
2
3
4
5
6
7
8
//Листинг 7.5
Public dTime As Date
	Sub МуМасrо()
dTime = Now + TimeValue("00:15:00")
Application.OnTime dTime, "MyMacro"
 
'ВАШ КОД
End Sub

Обратите внимание, что.вы передаете значение времени, равное 15 минутам, общей (public) переменной dTime. Это нужно, чтобы вы могли отменить метод OnTime в событии Workbook_BeforeC1ose, присвоив дополнительному аргументу Schedule значение Ложь (False). По умолчанию его значение равно Истина (True), поэтому, изменив значение на Ложь (False), вы приказываете Excel отменить метод OnTime, настроенный на выполнение в указанное время.

Если не передать время в переменную, Excel не будет знать, какой метод OnTime нужно отменить, так как значение Now + TimeValue(«00:15:00») не является статическим, но становится статическим, когда передается в переменную. Если вы не присвоите дополнительному аргументу Schedule значение Ложь (False), рабочая книга будет автоматически открываться каждые 15 минут, после того как вы закроете ее, и выполнять макрос MyMacro.


Краткое описание

В статье рассказывается о возможностях и способах применения стандартного планировщика Windows в
связке с преднастроенными макросами и файлами Excel.

Подробное описание

Иногда бывает необходимо, чтобы компьютер выполнял определенные действия без вашего участия. Например, раз в сутки копировался какой-то файл, что-то удалялось, проверялось, запускался некий exe-файл, отправлялись письма, всплывали уведомления и тп. Можно было бы написать vba-макрос, который бы все это делал (макрос для Outlook, Excel и тп). Но чтобы такой макрос работал, нужно держать открытым тот же Outlook, Excel и тд.

Есть решение гораздо проще и удобнее — стандартный планировщик заданий Windows.

1. Открываете планировщик:

Запуск планировщика Windows

2. Нажимаете «Создать простую задачу»:

Создание задачи для планировщика

3. Вводите необходимые параметры (имя задания, время, частота и периодичность запуска и некоторые др.) и указываете, что нужно сделать:

Установка параметров планировщика

Если выбрать пункт «Запустить программу», то на следующем шаге вам будет предложено выбрать, какую программу или сценарий вы хотите запустить. Кроме того, вы также можете указать дополнительные аргументы запуска:

Выбор программы или сценария для запуска

Именно пункт «Запустить программу» дает нам очень много свободы действий, ведь в качестве скрипта или программы может быть все, что угодно: vbs/cmd скрипт, excel файл, любое другое приложение. Плюс, можно задать дополнительные параметры (аргументы) запуска.

И что важно, наша операционная система сама будет отслеживать время и необходимость запуска без дополнительных усилий с нашей стороны. Требование одно — должен быть включен компьютер. Если наступило время выполнения задачи, а ПК выключен, то задача будет исполнена, когда компьютер заработает (этот пункт можно настроить: либо игнорировать пропущенную задачу, либо запускать после включения ПК).

Вот такая вроде простая, но многими не востребованная вещь.

Для продвинутых пользователей есть возможность настройки планировщика из командной строки. Кстати, настройка из командной строки может быть очень полезна, когда вы, например, выполняете какой-то макрос в экселе и вам требуется выполнить ряд отложенных действий, а потом снова запустить макрос на продолжение, но уже со следующего этапа. С планировщиком это решается очень просто:

  1. макрос выполняет свою первую часть,
  2. завершает первую часть, через командную строку создает отложенное задание и прекращает свою работу (вплоть до закрытия файла excel),
  3. планировщик отслеживает время запуска нужного задания, запускает задание (например, проверка наличия файла в сети),
  4. по окончании проверки запускает следующее задание — запуск нашего исходного макроса, но уже со второго этапа и с полученным значениям статуса выполнения нашего отложенного задания.

И так сколько угодно раз, исходя из настроек вашего макроса и параметров планировщика.

Понравилась статья? Поделить с друзьями:
  • Запуск текстового редактора microsoft word
  • Запуск текстового процессора ms word осуществляется командой
  • Запуск редактора формул в ms word
  • Запуск программы текстового редактора word
  • Запуск программы при запуске excel