Search code examples
vbscriptexcel.application

How to close an application when vbscript crashes


I'm using VBscript to open Microsoft Excel and convert xls documents to csv.
Here is a quick example that takes an argument and converts the first page

Dim oExcel
Dim oBook
Set oExcel = CreateObject("Excel.Application")
Set oBook = oExcel.Workbooks.Open(Wscript.Arguments.Item(0))

oBook.SaveAs "out.csv", 6

oBook.Close False
oExcel.Quit

If everything works, that's great. But when the script crashes before it can close excel, the process continues to stay around and lock the file until I manually kill the process.

How can I make sure that I perform any clean up routines even when the script fails?


Solution

  • Add "On Error Goto ErrorHandler" at the top of your script, and at the bottom of it, add "ErrorHandler:". Underneath the ErrorHandler label add code to manage the situation depending on the Err.Number

    See Err object on MSDN.

    You can also use "On Error Resume Next". Here is an example.

    EDIT: My bad. "Goto" does not exist in VBS. The answer below is probably a much tidier approach.