Страницы: 1
RSS
VBA. Запуск макроса в зависимости от времени.
 
Добрый день. В файле 4 запроса PQ. Их нужно обновить 4 раза в день. В 6, 12, 18 и 24 часа.
Макрос обновления запроса я нашел.
Код
Sub Refresh_One_Query()

ThisWorkbook.Connections("Запрос — Заказы1").Refresh

Workbooks.Application.DisplayAlerts = False
Excel.ActiveWorkbook.Save
Application.Quit

End Sub

Запуск в определенное время тоже нашел
Код
Application.OnTime TimeValue("06:01:00"), "Refresh_One_Query"  
Но это немного не то. Если файл запустился в 6-05 запрос не обновляется.

Помогите пожалуйста сделать чтобы макрос запускал макрос в зависимости от времени. Если время с 00-00 до 6-00 запускается обновление Запрос — Заказы1
если время с 6-00 до 12-00 запускается обновление Запрос — Заказы2 и т..д.
Изменено: kolyaya - 11.07.2020 18:58:51
 
kolyaya, после выполнения пусть куда-то выводит время обновления (например в ячейку первого листа А1) и когда повторно он будет запускаться пусть проверяет разницу во времени между временем системы и то что в ячейке и там уже выполнять или не выполнять.
а вообще по какому событию должен срабатывать макрос?

а так вот тут есть много полезной информации https://www.planetaexcel.ru/techniques/3/6638/
Изменено: Mershik - 11.07.2020 18:08:37
Не бойтесь совершенства. Вам его не достичь.
 
К сожалению я совсем плохо в vba разбираюсь. Не могли бы вы помочь?
 
Цитата
kolyaya написал:
К сожалению я совсем плохо в vba разбираюсь.
Первый пост явно касающийся VBA был опубликован вами в прошлом году в сентябре. Прошло больше полугода - уже можно было бы какую-нибудь книжку освоить, что бы не было плохо :)
 
1. чтобы обновления данных в заданное время происходило из Excel нужно вообще НИКОГДА не закрывать этот файл
2. чтобы открыть ЛЮБОЙ файл в заданное время - это задача операционной системы, которая не имеет к Excel НИКАКОГО отношения и решается средствами операционной системы или специализированным ПО
а что нужно вам?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
kolyaya, добрый день!

Недавно столкнулся с такой же проблемой, и нашел очень простой выход!
Вам понадобится планировщик заданий - стандартная утилита виндовс. Планировщик расположен: Пуск - Средства администрирования - Планировщик заданий.

Создаем блокнот вписываем ваши данные, заменяя в конце txt на vbs. Название.vbs - обязательно сохраняем как кодировку ANSI .
Далее настраиваем планировщик на необходимое вам время и все.

Если не понятно как работать с планировщиком - посмотрите видео Николая https://www.planetaexcel.ru/techniques/3/6638/

Макрос для блокнота:
Код
Call Run_macros

Sub Run_macros()

    Dim objExcel
    Dim Op_writ
    Dim Wb
    
                    'запускаем Excel-процесс
  Set objExcel = CreateObject ("Excel.Application")
  objExcel.Visible = true    
  Op_writ="R:\.... (путь к файлу)"
  Set Wb = objExcel.Workbooks.Open (Op_writ)
                    'запуск макроса
  objExcel.run "Название макроса - Заказы1 "
                    'сохранение файла
  objExcel.Workbooks("Название файла.xlsm").Save
                    'по завершению закрываем документ. Пишем только имя файла, без пути
  objExcel.Workbooks("Название файла.xlsm").Close(false)
                    'закрываем Excel-процесс
  objExcel.Quit
  Set objExcel = Nothing
  Set Wb = Nothing
    
End Sub
Впитываю знания, как борщ после тренировки ^^)
 
Цитата
Молодое_Поколение написал:
 'сохранение файла  objExcel.Workbooks("Название файла.xlsm").Save
 'по завершению закрываем документ. Пишем только имя файла, без пути
 objExcel.Workbooks("Название файла.xlsm").Close(false)
всё это можно записать одной строкой:
Код
 'по завершению закрываем документ С СОХРАНЕНИЕМ. Пишем только имя файла, без пути  
objExcel.Workbooks("Название файла.xlsm").Close(true)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Молодое_Поколение написал:
нашел очень простой выход!
Что если данная книга уже где-нибудь открыта?
 
Андрей VG,

У меня параллельно открывается этот же файл и выполняется макрос, а что тут не так?
Впитываю знания, как борщ после тренировки ^^)
 
Цитата
Молодое_Поколение написал:
а что тут не так?
Потому что будет вот так. Файл уже открыт в другом экземпляре Excel. Следовательно ваш код откроет файл только для чтения. При попытке сохранить будет вот такой вот вопрос.
Чуть изменённый код вашего vbs
Скрытый текст
Изменено: Андрей VG - 12.07.2020 11:29:08
Страницы: 1
Наверх