У меня есть файлы дерева: Excel с именем Test.xls
(может быть пустым для этого теста);
script1.vbs (Запустить Excel, скрытый для пользователя, открыть книгу Test.xls
в текущей директории, подождать100 секунд и закройте файл.):
Dim fileName : fileName = "Test.xls"
'Start Excel invisible
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = False
objExcel.DisplayAlerts = False
'Create filesystem object
Set objFSO = CreateObject("Scripting.FileSystemObject")
'Set path as Current Folder
Set objFolder = objFSO.GetFolder(".")
'Open file
Set wbSrc = OpenWorkbook(objFSO.GetAbsolutePathName(objFolder), fileName, True)
MsgBox("Start wait!")
WScript.Sleep 100000
MsgBox("End wait!")
'Close file
Call CloseWorkbook(wbSrc)
WrapUp()
Function OpenWorkbook(filePath, fileName, ReadOnlyMode)
Set wb = objExcel.Workbooks.Open(filePath & "\" & fileName, False, ReadOnlyMode)
Set OpenWorkbook = wb
End Function
Sub CloseWorkbook(wb)
Dim wbName : wbName = wb.Name
objExcel.Workbooks(wb.Name).Saved = True
objExcel.DisplayAlerts = False
objExcel.Workbooks(wb.Name).Close SaveChanges=False
End Sub
Sub WrapUp()
objExcel.Quit
Set wsSrc = Nothing
Set objExcel = Nothing
Set objFSO = Nothing
Wscript.Quit
End Sub
И run.bat
(только запустить script1.vbs):
cscript script1.vbs
Когда я запускаю run.bat
, во время его работы яоткрыть вручную (с помощью мыши) другую рабочую книгу, результат, который я вижу, открыт и Test.xls
. Что мне нужно сделать, чтобы скрыть работу над Test.xls
.
Примечания: В реальном коде много манипуляций с Test.xls
, таких как запись, масштабирование и т. Д. Еще одно странное поведение - когда я вижу Test.xls
, скрипт работает, и я щелкаю где-то в Test.xls
, затем скрипт сразу же завершается ошибкой, когда я закрываю Test.xls
или другой файл Excel.