|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Скрипт, который открывает и закрывает в назначенное время файл Excel |
|
Любой язык - [решено] Скрипт, который открывает и закрывает в назначенное время файл Excel
|
Старожил Сообщения: 235 |
Профиль | Отправить PM | Цитировать Всем привет!
Не могли бы написать скрипт, который будет открывать в назначенное время файл Excel, а через десять минут после открытия закрывать. Например, в коде перечислить определенные даты и время, в которые надо открыть файл. 28.12.20 12:30 28.12.20 19:45 30.12.20 2:35 30.12.20 5:10 02.01.21 14:00 02.01.21 16:32 04.01.21 19:30 04.01.21 21:10 C:\Users\Администратор\Desktop\Новая папка\Лист Excel.xlsx |
|
Отправлено: 20:24, 27-12-2020 |
Старожил Сообщения: 235
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Отправлено: 05:09, 04-01-2021 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
(*.*) Сообщения: 36491
|
Профиль | Сайт | Отправить PM | Цитировать Цитата v79italya:
Я вот не представляю, как будет работать вариант запуска по времени от DJ Mogarych. В смысле, я представляю, что надо в нем допиливать ради вашей странной хотелки. |
|
------- Отправлено: 09:58, 04-01-2021 | #12 |
fascinating rhythm Сообщения: 6493
|
Профиль | Отправить PM | Цитировать Ну, по идее, скрипт в этом варианте надо запускать в планировщике каждую минуту.
А вообще, конечно, в скрипт нужно перенести всё то, что делает макрос, чтобы решение было не таким костыльным. |
------- Отправлено: 10:12, 04-01-2021 | #13 |
(*.*) Сообщения: 36491
|
Профиль | Сайт | Отправить PM | Цитировать Цитата DJ Mogarych:
|
|
------- Отправлено: 11:58, 04-01-2021 | #14 |
Старожил Сообщения: 235
|
Профиль | Отправить PM | Цитировать Цитата Vadikan:
Цитата Vadikan:
Цитата DJ Mogarych:
Мне в скрипт переносить всю работу макроса не надо. Причина: не разбираюсь в скриптах и ничего без помощи не смогу сделать. К тому же в файле может быть запрос Power Query, который обновляет макрос и сохраняет изменения. Как то так |
|||
Отправлено: 17:39, 04-01-2021 | #15 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать v79italya,
Вариант решения (сохраните код в файл.vbs), как Вы поставили задачу
FileXlsm = "C:\Users\Администратор\Desktop\Новая папка\Лист Excel.xlsm"
FileSpis = "C:\Users\Администратор\Desktop\Новая папка\Лист Excel.xlsm.txt"
WaitSek = 600 'Подождать перед закрытием Excel (сек)
LoopSek = 60 'Цикл повтора опроса расписания (сек)
IfSek = 59 'Точность сравнения текущего времени и времени задания (сек)
If ReadSpis(FileSpis, MasSpis) = 0 Then WScript.Quit 'Exit Sub
Do
For Each D In MasSpis
If IsDate(D) Then
If Abs(DateDiff("s", Now, D)) <= IfSek Then
Set xls = CreateObject("Excel.Application")
xls.Visible = True ' False
xls.Workbooks.Open (FileXlsm)
WScript.Sleep (WaitSek * 1000)
xls.ActiveWorkbook.Save
xls.ActiveWorkbook.Close
' xls.Quit
Set WMI = GetObject("winMgmts:").ExecQuery("SELECT * From Win32_Process WHERE Name='Excel.exe'")
For Each P In WMI
P.Terminate()
Next
Exit For
End If
End If
Next
NDate = 0
For Each D In MasSpis
If IsDate(D) Then If DateDiff("s", Now, D) > 0 Then NDate = NDate + 1
Next
If NDate = 0 Then NDate = ReadSpis(FileSpis, MasSpis)
If NDate > 0 Then WScript.Sleep (LoopSek * 1000)
Loop While NDate > 0
'=========================================================
Function ReadSpis(FileSpis, MasSpis)
ReadSpis = 0
With CreateObject("Scripting.FileSystemObject")
On Error Resume Next
Set fIn = .OpenTextFile(FileSpis, 1, False)
Err.Number = 0
MasSpis = Split(fIn.ReadAll, vbCrLf)
fIn.Close
If Err.Number = 0 Then
For Each D In MasSpis
If IsDate(D) Then If DateDiff("s", Now, D) > 0 Then ReadSpis = ReadSpis + 1
Next
End If
On Error GoTo 0
End With
If ReadSpis = 0 Then MsgBox "Не удалось прочесть актуальные данные" + vbCrLf + FileSpis + vbCrLf + "Скрипт завершается"
End Function
В текстовом файле есть расписание запуска Excel, например В скрипте надо указать путь к этому файлу и к запускаемому Excel-файлу. Кстати, если у Вас в Excel-файле есть макрос, не может быть у него расширение .xlsx, как Вы указали в своём вопросе. При запуске скрипта прочитывается файл с расписанием и пока это расписание не исчерпается, этот файл перепрочитываться не будет. Скрипт будет висеть запущенным, с заданным интервалом анализировать расписание, запускать Excel во время, близкое к расписанию с заданной погрешностью, ждёт указанное время, затем сохраняет файл, закрывает его, прекращает работу Excel. При исчерпании расписания скрипт попытается заново прочесть файл с расписанием, если файл обновлен и в нём присутствуют времена исполнения больше текущего, скрипт продолжит работу, иначе его работа будет завершена. |
------- Последний раз редактировалось megaloman, 06-01-2021 в 18:43. Отправлено: 14:31, 05-01-2021 | #16 |
Старожил Сообщения: 235
|
Профиль | Отправить PM | Цитировать megaloman, большое спасибо!
Попробую завтра, при свободном времени, опробовать. По описанию, я так понял, Вы в коде все предусмотрели. Без регулярного перечитывания.Даже вывод сообщений на случай ошибочных данных или завершения работы скрипта. Еще и сохранение изменений в файле. Спасибо! |
Отправлено: 20:16, 05-01-2021 | #17 |
Старожил Сообщения: 235
|
Профиль | Отправить PM | Цитировать megaloman, все работает!
Поначалу не мог запустить на windows 10. Не мог создать файл с расширением .vbs Установил Notepad+, но он сохранял текстовый файл в .vb. Я еще не сразу понял и часа два возился с .vb-файлом. Потом уже в сети скачал готовый скрипт.vbs и заменил код. Все круто! Единственное, если открыт еще файл Excel и он активный, то может закрыть вместо нужного активный. Еще реагирует на кириллицу в пути. А так скрипт просто супер! Спасибо большое! |
Отправлено: 17:00, 06-01-2021 | #18 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать Цитата v79italya:
Цитата v79italya:
|
||
------- Отправлено: 18:55, 06-01-2021 | #19 |
Старожил Сообщения: 235
|
Профиль | Отправить PM | Цитировать megaloman, попробую завтра опробовать
Спасибо! |
Отправлено: 17:53, 07-01-2021 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Bat файл, который запускает, завершает и перезапускает приложение через время. | rom1798 | Скриптовые языки администрирования Windows | 1 | 31-08-2020 10:50 | |
CMD/BAT - [решено] bat- файл, который проверил бы время изменения файла | servad | Скриптовые языки администрирования Windows | 7 | 30-08-2019 12:01 | |
CMD/BAT - [решено] CMD/BAT - Скрипт, который считывает количество данных из разных таблиц Excel | romfus | Скриптовые языки администрирования Windows | 17 | 21-04-2018 15:56 | |
CMD/BAT - Помогите написать скрипт, который отправляет наа фтп только 1 файл | Sasssssssha | Скриптовые языки администрирования Windows | 2 | 13-05-2016 06:50 | |
putty как заставить крон запускать скрипт в назначенное время? | Вебмастеру | 3 | 30-09-2005 14:46 |
|