У меня есть код VBScript, чтобы открыть файл Excel, запустить макрос и закрыть его. Хорошо.
Теперь единственное, что я хочу изменить, - это оставить файл открытым.
Если я удаляю 2 строки кода xlApp.activewindow.close и xlApp.Quit, то рабочая книга и приложение в любом случае закрываются, но остаются в фоновом режиме (процесс Excel все еще активен в диспетчере задач). Следовательно, невозможно повторно запустить макрос позже в том же файле, снова вызвав скрипт (именно это я и хочу сделать).
Почему?
Вот код:
Option Explicit
On Error Resume Next
MyTest
Sub MyTest()
Dim xlApp
Dim xlBook
Dim fpath
Dim fname
' Excel application running? if not, open Excel
On Error Resume Next
Set xlApp = GetObject(, "Excel.Application")
If xlApp <> "Microsoft Excel" Then
Set xlApp = CreateObject("Excel.Application")
End If
Err.Clear
' correct Excel file open? if not, open it
fpath = "D:\Desktop\"
fname = "MyTest.xls"
xlApp.Workbooks(fname).Activate
If Err = 0 Then
' no error, so it has been possible to activate the workbook
Set xlBook = xlApp.Workbooks(fname)
Else
' unable to activate, so workbook was not open -> open it now
Set xlBook = xlApp.Workbooks.Open(fpath & fname, 0, True)
End If
Err.Clear
' now run the desired macro in the excel file
xlApp.Run "HelloWorld"
' WANT TO CHANGE THIS
xlBook.saved = True
xlApp.activewindow.close
' AND THIS
xlApp.Quit
Set xlBook = Nothing
Set xlApp = Nothing
End Sub