VBScript заканчивается перед сохранением и закрытием книги Excel - PullRequest
0 голосов
/ 22 января 2019

У меня есть очень простой VBScript, который я хочу иметь возможность вызывать из планировщика задач, чтобы открыть документ Excel, обновить все, а затем сохранить и закрыть его. Я играл различные фрагменты кода, которые я нашел в Интернете (поскольку я очень новичок в этом), и я могу заставить его открывать и обновлять все, но VBScript закрывается, прежде чем он сохранит и / или закроет книгу.

Я попытался добавить 'WScript.Sleep' (с различным количеством времени), а также DoEvents, чтобы завершить работу Excel, но сценарий по-прежнему закрывается перед сохранением и закрытием книги.

Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = 
objExcel.Workbooks.Open("\\llfs01\ReportHub(Shoals)\Sales\Daily 
Reports\F&I Daily Reports\CIT Report.xlsm")

objExcel.Application.Visible = True
objExcel.DisplayAlerts = False
objExcel.AlertBeforeOverwriting = False
objWorkbook.WorkSheets(1).Activate
objWorkbook.RefreshAll 'Refresh everything
objWorkbook.DoEvents 'Let Excel finish
WScript.Sleep 20000
objExcel.ActiveWorkbook.Save
DoEvents
objExcel.ActiveWorkbook.Close

Мне нужен код, чтобы открыть рабочую книгу (пока мой компьютер заблокирован и без присмотра), обновить все данные в рабочей книге, сохранить ее и закрыть книгу.

1 Ответ

0 голосов
/ 22 января 2019

Вы можете установить переменную = objExcel.ActiveWorkbook.BuiltinDocumentProperties("Last Save Time") и затем цикл Do Events до objExcel.ActiveWorkbook.BuiltinDocumentProperties("Last Save Time") > variable

Dim s

s = objExcel.ActiveWorkbook.BuiltinDocumentProperties("Last Save Time")

objExcel.ActiveWorkbook.Save
Do Until objExcel.ActiveWorkbook.BuiltinDocumentProperties("Last Save Time") > s
    DoEvents
Loop
objExcel.ActiveWorkbook.Close

РЕДАКТИРОВАТЬ:

Добавлен в тело оригиналакод для комментария ОП

Dim s
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("\\llfs01\ReportHub(Shoals)\Sales\Daily 
Reports\F&I Daily Reports\CIT Report.xlsm")

s = objExcel.ActiveWorkbook.BuiltinDocumentProperties("Last Save Time")

objExcel.Application.Visible = True
objExcel.DisplayAlerts = False
objExcel.AlertBeforeOverwriting = False
objWorkbook.WorkSheets(1).Activate
objWorkbook.RefreshAll 'Refresh everything

objExcel.ActiveWorkbook.Save
Do Until objExcel.ActiveWorkbook.BuiltinDocumentProperties("Last Save Time") > s
    DoEvents
Loop
objExcel.ActiveWorkbook.Close
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...