By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
444,041 Members | 1,018 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 444,041 IT Pros & Developers. It's quick & easy.

Can't close EXCEL from my VB.NET application

P: n/a
I'm attempting to close EXCEL from within my VB.NET application.
Using the excel object library to write data to my spreadsheet is working
fine but when I try to quit application object it does not work. I know this
because I can still see the Excel application running in Task Manager.

How do I shut down EXCEL?

I have tried the QUIT method and Interop.RemoveComponent.

--
Thank You
Mar 31 '06 #1
Share this Question
Share on Google+
7 Replies


P: n/a
Hi,

Use marshal.releasecomobject

http://www.vb-tips.com/default.aspx?...3-cc46c8615787

Ken
---------------

"SteveS" wrote:
I'm attempting to close EXCEL from within my VB.NET application.
Using the excel object library to write data to my spreadsheet is working
fine but when I try to quit application object it does not work. I know this
because I can still see the Excel application running in Task Manager.

How do I shut down EXCEL?

I have tried the QUIT method and Interop.RemoveComponent.

--
Thank You

Mar 31 '06 #2

P: n/a
Ken,
I used the following but it still leaves a Excel process open in Task
Manager.

System.Runtime.InteropServices.Marshal.ReleaseComO bject(xlApp)
System.Runtime.InteropServices.Marshal.ReleaseComO bject(wb)
System.Runtime.InteropServices.Marshal.ReleaseComO bject(xlSheet)
xlApp = Nothing
wb = Nothing
xlSheet = Nothing

GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()

--
Thank You
"Ken Tucker [MVP]" wrote:
Hi,

Use marshal.releasecomobject

http://www.vb-tips.com/default.aspx?...3-cc46c8615787

Ken
---------------

"SteveS" wrote:
I'm attempting to close EXCEL from within my VB.NET application.
Using the excel object library to write data to my spreadsheet is working
fine but when I try to quit application object it does not work. I know this
because I can still see the Excel application running in Task Manager.

How do I shut down EXCEL?

I have tried the QUIT method and Interop.RemoveComponent.

--
Thank You

Mar 31 '06 #3

P: n/a
"SteveS" <St****@discussions.microsoft.com> schrieb:
I used the following but it still leaves a Excel process open in Task
Manager.


Make sure you are releasing the objects in the order they were created. In
addition you may want to post relevant parts of the code to enable people
here to determine whether or not you are really releasing all objects.

--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://classicvb.org/petition/>

Apr 1 '06 #4

P: n/a
This works for me:

'Clean-up: Close the workbook and quit Excel.
If oBook IsNot Nothing Then
oBook.Close(False)
System.Runtime.InteropServices.Marshal.ReleaseComO bject(oBook)
oBook = Nothing
End If
If oBooks IsNot Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComO bject(oBooks)
oBooks = Nothing
End If
If oExcel IsNot Nothing Then
oExcel.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComO bject(oExcel)
oExcel = Nothing
End If

"SteveS" <St****@discussions.microsoft.com> wrote in message
news:1F**********************************@microsof t.com...
Ken,
I used the following but it still leaves a Excel process open in Task
Manager.

System.Runtime.InteropServices.Marshal.ReleaseComO bject(xlApp)
System.Runtime.InteropServices.Marshal.ReleaseComO bject(wb)
System.Runtime.InteropServices.Marshal.ReleaseComO bject(xlSheet)
xlApp = Nothing
wb = Nothing
xlSheet = Nothing

GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()

--
Thank You
"Ken Tucker [MVP]" wrote:
Hi,

Use marshal.releasecomobject

http://www.vb-tips.com/default.aspx?...3-cc46c8615787

Ken
---------------

"SteveS" wrote:
> I'm attempting to close EXCEL from within my VB.NET application.
> Using the excel object library to write data to my spreadsheet is
> working
> fine but when I try to quit application object it does not work. I
> know this
> because I can still see the Excel application running in Task Manager.
>
> How do I shut down EXCEL?
>
> I have tried the QUIT method and Interop.RemoveComponent.
>
> --
> Thank You

Apr 1 '06 #5

P: n/a
I've tried your resolution and other posts offering diiferent resolutions
unfortunately the EXCEL process remains present in Task Manager.
I've attached my code in hopes that it may shed some light on the issue.
As you can see the code is quite simple.....

My code is shown below:

Dim xlapp As Excel.Application
xlapp = CType(CreateObject("Excel.Application"), Excel.Application)
Dim wb As Excel.Workbook = xlapp.Workbooks.Open(fileName)
Dim xlSheet As Excel.Worksheet

Dim currRow As Integer

xlSheet = wb.Worksheets(1)
currRow = PTLRecordNumber

xlSheet.Cells(currRow, 1) = Me.LotNumber
xlSheet.Cells(currRow, 2) = Me.ScrewMachineNumber
xlSheet.Cells(currRow, 3) = Me.PartNumber
xlSheet.Cells(currRow, 4) = Me.PlatingDate
xlSheet.Cells(currRow, 5) = 0
xlSheet.Cells(currRow, 6) = Me.LoadSize
xlSheet.Cells(currRow, 7) = Me.FullLoad
xlSheet.Cells(currRow, 8) = Me.Mean
xlSheet.Cells(currRow, 9) = Me.Hi
xlSheet.Cells(currRow, 10) = Me.Low
xlSheet.Cells(currRow, 11) = Me.PLTankNumber
xlSheet.Cells(currRow, 12) = Me.BasketNumber
xlSheet.Cells(currRow, 13) = Me.CarrierNumber
xlSheet.Cells(currRow, 14) = Me.AdhesionTest
xlSheet.Cells(currRow, 15) = Me.SolderabilityTest
xlSheet.Cells(currRow, 16) = Me.OscilineNiTank
xlSheet.Cells(currRow, 17) = Me.Comments

'ss wb.SaveAs(fileName, Excel.XlFileFormat.xlExcel9795)
wb.Save()
wb.Close()
xlapp.Quit()
'ss xlApp.UserControl = True
'ss xlApp.Visible = True

'Attempt to close excel - notorious problem with .net not closing
all instances of Excel in task manager!!
System.Runtime.InteropServices.Marshal.ReleaseComO bject(xlSheet)
System.Runtime.InteropServices.Marshal.ReleaseComO bject(wb)
System.Runtime.InteropServices.Marshal.ReleaseComO bject(xlapp)
xlapp = Nothing
wb = Nothing
xlSheet = Nothing

GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
--
Thank You
"Herfried K. Wagner [MVP]" wrote:
"SteveS" <St****@discussions.microsoft.com> schrieb:
I used the following but it still leaves a Excel process open in Task
Manager.


Make sure you are releasing the objects in the order they were created. In
addition you may want to post relevant parts of the code to enable people
here to determine whether or not you are really releasing all objects.

--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://classicvb.org/petition/>

Apr 3 '06 #6

P: n/a
"SteveS" <St****@discussions.microsoft.com> schrieb:
I've tried your resolution and other posts offering diiferent resolutions
unfortunately the EXCEL process remains present in Task Manager.
I've attached my code in hopes that it may shed some light on the issue.
As you can see the code is quite simple.....

My code is shown below:

Dim xlapp As Excel.Application
xlapp = CType(CreateObject("Excel.Application"), Excel.Application)


Why not use 'New Excel.Application()'? Additionally I suggest to wait a few
seconds after your application has released the references. Excel is an
automation server that typically doesn't shut down immediately after the
last reference has been removed.

--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://classicvb.org/petition/>

Apr 3 '06 #7

P: n/a
excel is a piece of crap you should remove excel from every computer on
your network

the biggest time-waster ever invented; at least i know it's worse than
even internet explorer lol

learn Accesss or SQL screw excel in the mouth

Apr 5 '06 #8

This discussion thread is closed

Replies have been disabled for this discussion.