Код VBScript для сохранения файла Excel открытым - PullRequest
0 голосов
/ 10 октября 2011

У меня есть код 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

Ответы [ 2 ]

3 голосов
/ 10 октября 2011

Вам просто нужно сделать ваш новый экземпляр Excel видимым.Сделайте это сразу после создания:

xlApp.Visible = True
0 голосов
/ 10 октября 2011

Эта строка кода закроет вашу текущую активированную книгу (на данный момент это D:\Destop\MyTest.xls);

xlApp.activewindow.close

Эта строка выйдет из приложения Excel;

xlApp.Quit
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...