Application ontime vba excel описание

Выполнение процедуры VBA Excel без аргументов в назначенное время или через определенный промежуток времени с помощью метода Application.OnTime.

Application.OnTime EarliestTime, Procedure, LatestTime, Schedule

Параметры метода Application.OnTime

Основные параметры:

  1. EarliestTime – время, когда необходимо выполнить указанную процедуру.
  2. Procedure – имя выполняемой процедуры.

Процедура Procedure не должна иметь аргументов и не может быть объявлена в модуле формы.

В качестве аргументов параметра EarliestTime используются следующие функции:

  • TimeValue(«hh:mm:ss») – чтобы запланировать выполнение указанной процедуры в определенное время суток.
  • Now + TimeValue(«hh:mm:ss») – чтобы запланировать выполнение указанной процедуры по истечении заданного времени с момента запуска процедуры с методом Application.OnTime.

Дополнительные параметры:

  1. LatestTime – интервал времени, в течение которого можно запустить указанную процедуру, если Microsoft Excel в назначенное время выполняет другую процедуру. По умолчанию указанная процедура будет запущена в любом случае после завершения предыдущей процедуры. Подробнее об этом читайте на сайте разработчика.
  2. Schedule – если задано значение True, будет запланировано выполнение указанной процедуры, False – очистка ранее установленной процедуры. Значение по умолчанию – True.

Параметр LatestTime я не тестировал, а вот любое применение параметра Schedule в значении False у меня в Excel 2016 вызывает ошибку. Поэтому в примерах я эти параметры не использую.

Примеры выполнения процедур по времени

Пример 1
Однократный запуск внешней процедуры через заданный промежуток времени:

Sub Primer1()

    Application.OnTime Now + TimeValue(«00:00:10»), «Procedure1»

End Sub

Sub Procedure1()

    MsgBox «Процедура запущена!»

End Sub

Процедура Procedure1 будет выполнена через 10 секунд после запуска процедуры Primer1.

Пример 2
Однократный запуск внешней процедуры в заданное время:

Sub Primer2()

    Application.OnTime TimeValue(«12:00:00»), «Procedure2»

End Sub

Sub Procedure2()

    MsgBox «Системное время — 12 часов!»

End Sub

Процедура Procedure2 будет выполнена в 12 часов по системному времени компьютера, если ранее была запущена процедура Primer2.

Пример 3
Многократный запуск внешней процедуры:

Sub Primer3()

    Application.OnTime Now + TimeValue(«00:00:01»), «Procedure3»

End Sub

Sub Procedure3()

    Cells(1, 1) = Cells(1, 1) + 1

        If Cells(1, 1) = 100 Then Exit Sub

    Call Primer3

End Sub

Процедура Primer3 запускает «условно бесконечный» секундомер в ячейке A1 активного рабочего листа, ограниченный 100 секундами с помощью условия.

Пример 4
Сохранение рабочей книги Excel каждые 10 минут:

Sub Primer4()

    Application.OnTime Now + TimeValue(«00:10:00»), «Procedure4»

End Sub

Sub Procedure4()

    ThisWorkbook.Save

    Call Primer4

End Sub

Процедуры Primer4() и Procedure4() будут работать в бесконечном цикле, сохраняя рабочую книгу Excel каждые 10 минут, до закрытия этой книги. Закрывать книгу следует не менее, чем через 10 минут после внесения последних изменений, для гарантированного их сохранения.


title keywords f1_keywords ms.prod api_name ms.assetid ms.date ms.localizationpriority

Application.OnTime method (Excel)

vbaxl10.chm133184

vbaxl10.chm133184

excel

Excel.Application.OnTime

31268da0-8ec7-7169-a1d0-8db34b3385cd

04/05/2019

medium

Application.OnTime method (Excel)

Schedules a procedure to be run at a specified time in the future (either at a specific time of day or after a specific amount of time has passed).

Syntax

expression.OnTime (EarliestTime, Procedure, LatestTime, Schedule)

expression A variable that represents an Application object.

Parameters

Name Required/Optional Data type Description
EarliestTime Required Variant The time when you want this procedure to be run.
Procedure Required String The name of the procedure to be run.
LatestTime Optional Variant The latest time at which the procedure can be run. For example, if LatestTime is set to EarliestTime + 30 and Microsoft Excel is not in Ready, Copy, Cut, or Find mode at EarliestTime because another procedure is running, Excel will wait 30 seconds for the first procedure to complete. If Excel is not in Ready mode within 30 seconds, the procedure won’t be run. If this argument is omitted, Excel will wait until the procedure can be run.
Schedule Optional Variant True to schedule a new OnTime procedure. False to clear a previously set procedure. The default value is True.

Remarks

Use Now + TimeValue(time) to schedule something to be run when a specific amount of time (counting from now) has elapsed. Use TimeValue(time) to schedule something to be run a specific time.

The value of EarliestTime is rounded to the closest second.

Set Schedule to False to clear a procedure previously set with the same Procedure and EarliestTime values.

Procedure must take no arguments and cannot be declared in a custom class or form.

Example

This example runs my_Procedure 15 seconds from now.

Application.OnTime Now + TimeValue("00:00:15"), "my_Procedure"

This example runs my_Procedure at 5 P.M.

Application.OnTime TimeValue("17:00:00"), "my_Procedure"

This example cancels the OnTime setting from the previous example.

Application.OnTime EarliestTime:=TimeValue("17:00:00"), _ 
 Procedure:="my_Procedure", Schedule:=False

[!includeSupport and feedback]

vba application ontime

One of the many useful features of Excel and other MS Office applications, of which little users know of is the VBA OnTime function. It allows you to execute any Excel VBA procedure after the specified amount of time (delay). Using it recursively allows you to create a recurring / repeating event which lets you schedule periodic VBA Macros to run when working on Excel Workbooks.

Application OnTime Syntax

The syntax of the VBA OnTime function:

Application.OnTime( EarliestTime, Procedure, LatestTime, Schedule)

EarliestTime
The time (Date variable) when the Procedure is to be executed

Procedure
A string with the name of the Procedure which is to be executed

LatestTime
Optional. This is the latest time when the Procedure should be executed. This allows Excel for some flexibility when prioritizing Procedure execution together with other Excel (or other MS Office applications) Events such as Cut, Copy or Find. It makes sense to use this variable when your user is working on the file, so as not to interrupt any activities

Schedule
Optional. Defaults to True. If True schedules a new OnTime procedure. If False clears a previously set procedure. Useful when you want to cancel a previously scheduled Procedure

The code below will schedule the HelloWorld Sub to run in 1 seconds.

Sub SetAlarm()
    Dim timeout As Date
    timeout = TimeValue("20:40:50")
    Application.OnTime timeout, "WhatHour"
End Sub
 
Sub WhatHour()
    Call MsgBox("The time is " & Format(Now(), "HH:MM"))
End Sub

From above the following are equivalent:

Application.OnTime timeout, "WhatHour"
Application.OnTime EarliestTime:=timeOut, Procedure:="WhatHour", Schedule:=True

Wait 1 second and expect a Message Box to open with the message “Hello World!”.

Cancelling Application OnTime

You can also use the Application OnTime function to Cancel Scheduled Procedures.

Sub ScheduleAndCancelHelloWorld()
    Dim timeout As Date
    timeout = Now + TimeValue("00:00:10")
    Application.OnTime timeout, "HelloWorld"
    '...
    Application.OnTime timeout, "HelloWorld", False
End Sub

Sub HelloWorld()
    Call MsgBox("Hello World")
End Sub

Example 1: Automatic worksheet recalculate using OnTime

The Timer can come in handy when we need to refresh our worksheet(s) periodically and do not want to do this manually. See the example below:

Let us add this procedure in any VBA module within the workbook:

Sub Refresh()
    Application.CalculateFull
    Dim timeout As Date
    timeout = Now + TimeValue("00:00:10")
    Application.OnTime timeout, "Refresh"
End Sub

Next add this to the Workbook in the “Microsoft Excel Objects” section of the VBA project:

Private Sub Workbook_Open()
    Refresh
End Sub

That is it! Once you open the workbook the whole workbook will be recalculated every 10 seconds. In order to stop it simply close the workbook or debug the Refresh procedure.

Example 2: Automatic workbook versioning using OnTime

Working on a large Excel solution and afraid that you workbook will crash? Want to have a separate backup copy of your file every now and then. Why not use automatic file versioning then?

Add this code to any VBA module:

Sub SaveNewVersion()
    Dim fileName As String, index As Long
    If InStr(ActiveWorkbook.Name, "_v") = 0 Then
        fileName = ActiveWorkbook.Path & "" & Left(ActiveWorkbook.Name, InStr(ActiveWorkbook.Name, ".") - 1) & "_v1.xlsm"
        ActiveWorkbook.SaveAs (fileName)
    Else
        index = CInt(Split(Right(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - InStr(ActiveWorkbook.Name, "_v") - 1), ".")(0))
        index = index + 1
        fileName = ActiveWorkbook.Path & "" & Left(ActiveWorkbook.Name, InStr(ActiveWorkbook.Name, "_v") - 1) & "_v" & index & ".xlsm"
    End If
    ActiveWorkbook.SaveAs (fileName)
End Sub

Next replace the Refresh function with this:

Sub Refresh()
    SaveNewVersion
    Dim timeout As Date
    timeout = Now + TimeValue("00:10:00")
    Application.OnTime timeout, "Refresh"
End Sub

Voila! Your workbook will be saved as a new version every 10 minutes. Great isn’t? There are probably a ton of ways you can further tweak this to work better e.g. add a pop-up asking to confirm the creation of the next version etc.

Hope that this will prove useful to you! Let me know!

If you need Excel to run some VBA at a specific time, or repeatedly at set intervals, you can use the Application.OnTime method.

A basic call to Ontime requires that you supply a time when you want the code to run, and the name of the macro you want to run.

basic ontime call

The argument EarliestTime is called this because Excel will actually execute the Procedure no earlier than EarliestTime, but possibly later.

There’s no guarantee that your scheduled macro will run exactly when you want because Excel may be busy doing something else.

It may be executing some other VBA, or you may be entering data into a sheet (Enter mode). If Excel is not in Ready, Copy, Cut or Find mode, execution of your scheduled macro may be delayed.

There are two optional arguments, LatestTime and Schedule.

ontime call with all arguments

As we’ve just seen, Excel may not run your macro exactly at the time you want. By specifying LatestTime, we’re giving Excel a window, between EarliestTime and LatestTime, during which you want it to run your VBA.

If your scheduled code is delayed, and Excel is only ready to execute the macro after LatestTime, then it won’t run it at all.

The value of Schedule indicates whether your are setting a task (True), or cancelling one (False).

The default value is True so there’s no need to specify Schedule unless you are cancelling a previously set task.

Cancelling OnTime

If you want to cancel an OnTime task once you’ve scheduled it, you can do so like this

cancelling ontime

Cancelling OnTime requires that you specify the name of the macro, and exact time it is set to run. This means you need to store both of these somewhere.

Excel doesn’t provide any way for you to check what macros are scheduled to run, so you must keep track of these things yourself.

The easiest way would be to store the values in public variables/constants, or on a worksheet. Although you could store them in the registry if you want.

Download Example Workbook

Enter your email address below to download the sample workbook.

By submitting your email address you agree that we can email you our Excel newsletter.

Running Code at Set Intervals

If you want to repeatedly run the same macro at set periods you make the macro call itself.

First, write the macro that sets the OnTime schedule, I’m calling it SetOnTime. This macro will set a schedule for a macro called MyCode.

Then write the MyCode macro, which has the code you want to execute, and a call to SetOnTime.

When you run SetOnTime it sets the OnTime call, which when it runs, calls MyCode.

MyCode then calls SetOnTime again, and so on ……..

Running OnTime at set intervals

Specifying the Time

Time in Excel is a funny old thing and often causes a lot of confusion.

If you understand the way time is stored as serial number you can set an OnTime task like this

5 Seconds from Now

ontime 5 seconds from now

1 Hour from Now

ontime 1 hour from now

1 Day from Now

ontime 1 day from now

Or you can use TimeValue and TimeSerial to set a task for a particular time from now.

TimeValue : 1 hour 15 mins From Now

timevalue 1 hour 15mins from now

TimeSerial : 45 seconds From Now

timeserial 45 seconds from now

If you want to set a macro to run at a specific time, use Timevalue.

TimeValue : Run at 8.30pm.

timevalue run at specific time

Storing Time in a Public Constant

Of course if you are setting something to run at intervals you can use a public constant and store the interval in that.

I’ve declared a public constant called Interval and set it to 5.

By using TimeSerial I can set the interval that the macro runs at to every 5 seconds.

using public constant for interval

Multiple OnTime Tasks

You can set multiple tasks to run using OnTime. But remember that you need to keep a record of them if you want to be able to programatically unschedule them.

Running a Macro from a Closed Workbook

If you schedule a macro and then close the workbook containing the macro, Excel will try to open that workbook before running the macro.

In this scenario, if the workbook is not in a trusted location, you may find that macros in the workbook are disabled, and the scheduled macro will not run.

When Scheduled Tasks Won’t Run

A scheduled macro won’t run if the Excel application is closed.

A scheduled task will not execute in break mode. If you are debugging your VBA, like stepping through code, or a VBA routine has caused an error and you have started to debug it, scheduled tasks won’t execute and you’ll get an error telling you so.

break mode

If another VBA routine has caused an unhandled error and halted, scheduled tasks won’t execute until that error is acknowledged and Ended.

end the code not debug

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

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

Понравилась статья? Поделить с друзьями:
  • Application not found excel
  • Application max vba excel
  • Application match in vba excel
  • Application letter in word format
  • Application letter for job in word