2011-10-10 76 views
0

我有一個VBScript代碼來打開一個Excel文件,運行一個宏並關閉它。精細。VBScript代碼保持Excel文件打開

現在,我想改變的唯一事情就是將文件保持打開狀態。

如果我刪除了兩行代碼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 
+0

什麼「不起作用」? –

+0

對不起,如果我不清楚。不起作用的是打開文件。如果我刪除了兩行代碼「xlApp.activewindow.close」和「xlApp.Quit」,那麼工作簿和應用程序仍然是關閉的,但它們在後臺保持打開狀態(Excel進程在任務管理器中仍處於活動狀態)。因此,通過再次調用腳本(這正是我想要做的),稍後不可能在同一個文件上重新運行宏。 – user986990

+0

您還在腳本中保留這兩行嗎?:設置xlBook = Nothing設置xlApp = Nothing – 2011-11-25 09:07:32

回答

0

這行代碼將關閉當前激活的工作簿(現在,它是D:\Destop\MyTest.xls);

xlApp.activewindow.close 

此行將退出Excel應用程序;

xlApp.Quit 
+0

我可能有點不清楚我的問題。我知道你評論的兩行代碼在做什麼。請查看我對原始帖子的評論,以更好地解釋發生了什麼問題... – user986990

3

你只需要讓你的新的Excel實例可見。在創建它後立即執行此操作:

xlApp.Visible = True