2014-01-18 129 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,通过分配给函数名返回)。 –