Страницы: 1
RSS
Макрос VBA который работает по предварительно установленному времени
 
Добрый день
Нужен макрос, который будет запускаться в книге в 08:00 и 20:00 и будет содержать эти две команды.

Thisworkbook.Save
Thisworkbook.Close
Изменено: Богдан Кох - 09.02.2022 15:55:27
 
Богдан, для того, чтобы макрос работал, Thisworkbook (книга с макросом) должна быть открытой, а Вы ее закрываете (Close).
Вариант - макрос в другой постоянно открытой книге (а в нем указать какие книги нужно открыть и сохранить), либо запуск Thisworkbook средствами Win (диспетчер задач или что там еще сейчас есть подобное)
 
,Книга находится на сетевом диске и нужно, чтобы она сохранялась и закрывалась в установленное время.
У меня есть макрос, который это делает через определенное время от начала неактивных действий. Но он не подходит.
Нужно, чтобы макрос запускался именно в установленное время.
 
Код
    Application.OnTime Date + TimeSerial(8, 0, 0), "myMacro"
    Application.OnTime Date + TimeSerial(20, 0, 0), "myMacro"
 
Я думаю что это можно сделать так:

В Private Sub Workbook_Open
будет переменная присваиваемое время открывания книги,
TimeOfOpen = Now

тогда определяется через сколько наступит целевое время закрытия (8 или 20 часов) = TimeToClose

(я не знаю как)

А потом:


Sub NextRun()
   
   TimeToRun = Now + TimeToClose    
   Application.OnTime TimeToRun, "SaveThisWorkbook"    

End Sub

Sub SaveThisWorkbook()

On Error GoTo ErrorH:
   ActiveWorkbook.Save
   ActiveWorkbook.Close
Exit Sub
ErrorH:
   MsgBox ("Ошибка сохранения, Обратите на это внимание!")
   
End Sub
 
Вариант в одну строку
Код
Application.OnTime Date + WorksheetFunction.MRound(Time, 2 / 3) / 4 * 3 + 1 / 3, "SaveThisWorkbook"
 
Богдан Кох, вернитесь, приведите в порядок сообщение. Для оформления кода  - кнопка <...>
 
Богдан Кох, посмотрите по этой ссылке: https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=146907&a...
Только в VBS немного подправить под свои нужды.
Страницы: 1
Наверх