如何在出现错误时优雅地关闭打开的excel文件?
我使用dos.bat文件连续运行.vbs文件。。。如果出现任何错误,批处理文件将再次运行vbscript并继续运行。该脚本通过internet连接到站点以执行一些api调用。 现在,当出现连接问题或任何其他错误时,控制将从保持excel文件打开的脚本中出来。这样,每次出现错误时都会打开许多excel文件。。。代码如下。。。请告诉我如何在出现错误时关闭excel文件,然后优雅地退出脚本如何在出现错误时优雅地关闭打开的excel文件?,excel,vbscript,Excel,Vbscript,我使用dos.bat文件连续运行.vbs文件。。。如果出现任何错误,批处理文件将再次运行vbscript并继续运行。该脚本通过internet连接到站点以执行一些api调用。 现在,当出现连接问题或任何其他错误时,控制将从保持excel文件打开的脚本中出来。这样,每次出现错误时都会打开许多excel文件。。。代码如下。。。请告诉我如何在出现错误时关闭excel文件,然后优雅地退出脚本 '{{{{Some coding}}}} dim objExcel, objWorkbook,
'{{{{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
提前感谢一种可能的方法是将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\u Terminate
。这样,您可以自动关闭打开的工作簿并退出Excel
该类可以这样使用:
Set xl = New Excel
Set wb = xl.OpenWorkbook("C:\path\to\your.xlsx")
...
wb.Close
谢谢你重新编写这个问题。我误解了这篇文章:)哇看起来很棒。。。对不起,我是vbscript的新手。。。但在我尝试之前,它应该是“end function”而不是“end sub”两次吗?谢谢了解一种避免编写(大量)包装函数的方法/解决方法。另外,我相信Ansgar会编辑小故障(结束函数,通过分配函数名返回)。@user3209506是的,它应该。已修复。@AnsgarWiechers-函数返回值如何?