2014-01-18 89 views
1

我使用dos .bat文件連續運行.vbs文件...如果發生任何錯誤,批處理文件將再次運行vbscript並繼續運行。該腳本通過互聯網連接到一個網站執行一些API調用。 現在,當出現連接問題或任何其他錯誤時,控件將從腳本中打開,保持excel文件不變。通過這種方式,許多excel文件在每個錯誤上都會打開...代碼如下...請教我如何關閉錯誤的excel文件,然後優雅地從腳本中退出。如何正常退出關閉打開excel文件時出錯?

 '{{{{Some coding}}}} 

dim objExcel, objWorkbook, objRange 
Set objExcel = CreateObject("Excel.Application") 
Set objWorkbook = objExcel.Workbooks.Open("C:\temp.xlsx") 
objExcel.Visible = True 

     '{{{{Some coding}}}} 

objExcel.Cells(xlrow, 3).Value="Test" 
objExcel.Cells(xlrow, 3).Select 
objExcel.Activecell.Show 

     '{{{{Some coding}}}} 

objExcel.Workbooks(1).save 
objExcel.Workbooks(1).close 
objExcel.Quit 
Set objExcel = Nothing 
Set objWorkbook = Nothing 
WScript.Quit 

在此先感謝

回答

2

一種可能的方法是換了Excel中的自定義類處理:

Class Excel 
    Private xl 

    Private Sub Class_Initialize 
    Set xl = CreateObject("Excel.Application") 
    End Sub 

    Private Sub Class_Terminate 
    For Each wb In xl.Workbooks 
     wb.Saved = True 'discard unsaved changes 
     wb.Close   'close workbook 
    Next 
    xl.Quit   'quit Excel 
    End Sub 

    Public Function OpenWorkbook(filename) 
    Set OpenWorkbook = xl.Workbooks.Open(filename) 
    End Function 

    Public Function NewWorkbook 
    Set NewWorkbook = xl.Workbooks.Add 
    End Function 

    Public Property Get Workbooks 
    Set Workbooks = xl.Workbooks 
    End Property 
End Class 

過程Class_Terminate每當一個類的實例銷燬時自動調用。這樣,您可以自動關閉打開的工作簿並退出Excel。

類可以這樣使用:

Set xl = New Excel 
Set wb = xl.OpenWorkbook("C:\path\to\your.xlsx") 
... 
wb.Close 
+0

感謝重新措辭的問題。我誤解了OP。 :) – Damien

+0

哇看起來不錯...對不起,我是vbscript的一個新手...但在我嘗試之前應該是「end function」而不是「end sub」兩次嗎?謝謝! – Parag

+0

查看http://stackoverflow.com/a/20382898/603855瞭解避免必須編寫(大量)包裝函數的方法/解決方法。附:我確信Ansgar會編輯毛刺(End Function,通過分配給函數名返回)。 –