Another Quit problem

P

Paul van Kan

Hi All,

I have read a lot about problems with getting Excel to quit from VBScript,
but none of the suggestions seem to work for me. I am using VBScript 5.6 and
Excel 2002 SP3.

It doesn't get much simpler than this:

Sub Main()
Dim oExcel
Dim oWorkBook
Set oExcel = CreateObject("Excel.Application")

Set oWorkBook = oExcel.WorkBooks.Open("C:\TEST.XLS")
oWorkBook.Close False
Set oWorkBook = Nothing

oExcel.Quit
Set oExcel = Nothing
End Sub

Still, Excel is remaining active in the task-manager after running this
snippet. Leaving out the workbook-stuff (just starting and closing Excel)
works fine, but as soon as I start using an actual workbook, Excel won't
quit.

Does anybody have any ideas on how to solve this?

Thanks,

Paul
 
D

Dean Hinson

Paul,

I do not use VB itself, but using VBA within the workbook, I use
Application.Quit. Then in the Workbook_Close(), I use
Application.DisplayAlerts = False. Maybe you might need to place some VBA in
your workbook that you are opening in the VB script to totally close Excel.
However, to make it open/close without any prompting I use a digital
signature in the VBA so that when the workbook opens, it does not prompt
regarding macro security.

Just a thought.

Dean.
 
P

Paul van Kan

Thanks Dean,

At the moment, I don't even care about the prompt. All I am looking to do is
open a workbook and close it again, without leaving an Excel footprint in
the task-manager.

Again, all help is appreciated.

Paul
 
D

Dave Peterson

Any chance excel is sitting there waiting for a response from the user?

maybe adding a line to make excel visible will lead you to an answer.

Sub Main()
Dim oExcel
Dim oWorkBook
Set oExcel = CreateObject("Excel.Application")
oExcel.Visible = True

Set oWorkBook = oExcel.WorkBooks.Open("C:\TEST.XLS")
oWorkBook.Close False
Set oWorkBook = Nothing

oExcel.Quit
Set oExcel = Nothing
End Sub
 
E

Eric

I'm having the same problem, although I'm using Excel through .Net Interop.
My code is:

Dim app As New Excel.Application
Dim wb As Excel.Workbook
Dim ws As Excel.Worksheet

wb = app.Workbooks.Open(PathAndFilename)
ws = wb.Worksheets(1)

app.DisplayAlerts = False
ws.SaveAs(PathAndFilename)
app.Workbooks(1).Close()
app.Quit()

ws = Nothing
wb = Nothing
app = Nothing


I even tried adding GC.Collect, but that didn't do it either. I still see a
copy of EXCEL.EXE in Task Manager. I'm starting to think I need to do
Thread.Kill or something drastic like that.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top