Jesse Smothermon
Jesse Smothermon

Reputation: 1051

VBA Closing Excel Files

Say I have some VBA code in Access that uses excel for whatever reason. Sometimes I have trouble closing the file properly.

The code (I think) should look somewhat like this:

WBO.Close savechanges:=True
Set WBO = Nothing

XLO.Application.Quit
Set XLO = Nothing

rs.Close
db.Close

Here XLO is an excel object, WBO is a workbook object, rs is a DAO recordset and db is a DAO database. Even though the physical excel file closes there's still an "EXCEL.EXE" process occurring on my system, which stops me from running my program twice in a row. Does anyone know why this happens?

EDIT

I took out the rs.Close and then db.Close lines since I decided to manually export the data I was using from Access to Excel (there's too many rows and columns to copy each cell over efficiently). However, this didn't change the problem at hand.

Thank you,

Jesse Smothermon

Upvotes: 3

Views: 3676

Answers (3)

Jeremy F.
Jeremy F.

Reputation: 1868

Refer to this answer.
It worked for me.

Dim sKill As String

sKill = "TASKKILL /F /IM msaccess.exe"
Shell sKill, vbHide

If that works, mark the answer in the link with a ^, not mine.

Upvotes: 0

Kim Gysen
Kim Gysen

Reputation: 61

Why not just:

application.displayalerts = false
WBO.save (or saveas whatever it matters)
WBO.close 
set WBO = nothing 

I don't see a memory problem with that...

Upvotes: 0

barrowc
barrowc

Reputation: 10679

There isn't an actual Excel object. Application is the top-level object but that Application object has an Application property which actually points to "the creator of the specified object". So trying to quit XLO.Application won't do what you think it should.

Presuming that XLO is of type Excel.Application then try just XLO.Quit instead of XLO.Application.Quit

Upvotes: 3

Related Questions