Solved

can not close excel

Posted on 2006-11-28
11
219 Views
Last Modified: 2009-07-29
I am manipulating some cells in an excel spreadsheet, then saving it and then closing it. When I add a few additional commands (lines that are now commented out), excel stays open (I can see it in task manager) and I get a remote server error on the second pass.

Here's the code...let me know if you see anything or have suggestions, thanks

    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "qryPCPrePostCompare", stPathTemp & stFileName
    Set xl = CreateObject("Excel.Application")
    Set xlw = xl.Workbooks.Open(stPathTemp & stFileName)
    Set xls = xlw.Worksheets("qryPCPrePostCompare")
   
    'xls.Range(stHeader, Range(stHeader).End(xlDown)).Select
    'Selection.NumberFormat = "General"
    'Selection.Value = Selection.Value

    xls.Range(stHeader).Font.Bold = True
    xls.Range(stHeader).Borders(xlBottom).Weight = xlMedium
    xls.Range(stNumberCols).Columns.NumberFormat = "#,##0"
    xls.Range(stPercentCols).Columns.NumberFormat = "#,##0%"
    xls.Range(stCols).Columns.AutoFit
    xls.rows.AutoFit

    'xlw.Activate
    'ActiveWindow.SplitColumn = 1
    'ActiveWindow.SplitRow = 1
    'ActiveWindow.FreezePanes = True
   
    xl.DisplayAlerts = False
    xlw.SaveAs stPathTemp & stFileName
    xl.DisplayAlerts = True

    xl.Quit
    Set xls = Nothing
    Set xlw = Nothing
    Set xl = Nothing
0
Comment
Question by:avoorheis
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 4
  • 2
11 Comments
 
LVL 15

Expert Comment

by:Simon Ball
ID: 18035137
xl.close '?
xl.Quit
    Set xls = Nothing
    Set xlw = Nothing
    Set xl = Nothing
0
 
LVL 15

Expert Comment

by:Simon Ball
ID: 18035138
sorry, xlw.close
0
 
LVL 15

Expert Comment

by:Simon Ball
ID: 18035157
i tested this:

xl.DisplayAlerts = False
    xlw.SaveAs stPathTemp & stFileName
    xl.DisplayAlerts = True
   
    xl.Visible = True
    xlw.Close
    xl.Quit
    Set xls = Nothing
    Set xlw = Nothing
    Set xl = Nothing

and it kills excel properly
0
Creating Instructional Tutorials  

For Any Use & On Any Platform

Contextual Guidance at the moment of need helps your employees/users adopt software o& achieve even the most complex tasks instantly. Boost knowledge retention, software adoption & employee engagement with easy solution.

 

Author Comment

by:avoorheis
ID: 18037318
Thanks Sudonim,
I've tried xlw.close already and it didn't help, but, I'll try again.

I have several routines where I open an excel spreadsheet load/manipulate data and close, never any problems. The only thing different about this code seems to be the Activewindow. and Selection.

Even when I have problems, which appear as a "remote server" error and I can see an instance of Excel in the task manager, the actual file I have been using is closed properly (in other words, I can open it without getting a sharing violation).

I'll work on this over the next few days and provide more details.
0
 
LVL 15

Accepted Solution

by:
Simon Ball earned 350 total points
ID: 18038155
weird.

keep us posted then.

i just made a form, table and query and tested it using your code but i commented out the:

    xls.Range(stHeader).Font.Bold = True
    xls.Range(stHeader).Borders(xlBottom).Weight = xlMedium
    xls.Range(stNumberCols).Columns.NumberFormat = "#,##0"
    xls.Range(stPercentCols).Columns.NumberFormat = "#,##0%"
    xls.Range(stCols).Columns.AutoFit
    xls.rows.AutoFit

section as i had no defines ranges.

perhaps you could check to see if any of those are the problem.

you could try to include xl.visible at the top, and then step through it as a test, commenting out all the active code methodically, to see if one line of "data processing/manipulation" code is causing the quit to fail.

i notice there is no error trap posted in your routine... maybe as xcel is invisible some error is occuring but not being trapped or dalog is not being drawn on screen....
0
 
LVL 38

Assisted Solution

by:puppydogbuddy
puppydogbuddy earned 150 total points
ID: 18043121
avoorheis,

See this link......

                  http://www.tek-tips.com/viewthread.cfm?qid=90756&page=1


PDB
0
 

Author Comment

by:avoorheis
ID: 18094083
It appears there are 2 or 3 lines that will cause some sort of problem, so, I'll start with the first:
    xls.Range(stHeader, Range(stHeader).End(xlDown)).Select
When this line is not commented out, an instance of excel (seen in Task mgr) stays active (not a problem if commented out). I did set xl.visible and see the spreadsheet opens and closes, but, there is still an instance in tsk mgr.

So, I don't think the way I open and close the spreadsheet is wrong, as it does work without the above line of code, but, there is something with the above code that is causing a problem...maybe starting another instance of excel?

0
 

Author Comment

by:avoorheis
ID: 18094964
after some more testing, I've come down to this...I'll restate the problem to hopefully make it easier to isoate what I'm doing wrong:

Here is one of the line that's causing a problem. The application and worksheet do close, but, there is still an instance of excel in taskmanager. There is only one instance that ever appears. I've commented out all the other code and am just running the stuff below (except for the error handling and some definitions, but, there are not errors).

    Dim xlw As Excel.Workbook
    Dim xl As Excel.Application
    Dim xls As Excel.Worksheet
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "qryPCPrePostCompare", stPath & stFileName
    Set xl = CreateObject("Excel.Application")
    Set xlw = xl.Workbooks.Open(stPath & stFileName)
    Set xls = xlw.Worksheets("qryPCPrePostCompare")
    xls.Range(stHeader, Range(stHeader).End(xlDown)).Select       <<<<< if I comment this out, no problems
    xl.DisplayAlerts = False
    xlw.SaveAs stPath & stFileName
    xl.DisplayAlerts = True
    xlw.Close
    xl.Quit
    Set xls = Nothing
    Set xlw = Nothing
    Set xl = Nothing

So, an instance of excel is still visible in task mgr. When I close Access it goes away.
0
 

Author Comment

by:avoorheis
ID: 18095443
found the problems:
xls.Range(stHeader, Range(stHeader).End(xlDown)).Select
should be
xls.Range(stHeader, xls.Range(stHeader).End(xlDown)).Select

Selection.Value = Selection.Value
should be
xl.Selection.Value = xl.Selection.Value

ActiveWindow.SplitColumn = 1
should be
xl.ActiveWindow.SplitColumn = 1

etc, etc

but, you guys help, and I appreciate it.
0
 
LVL 38

Expert Comment

by:puppydogbuddy
ID: 18095488
avoorheis,
you are experiencing a common occurence associated with Office Automation known as "unmanaged instances".  This link explains the problem and offers a tentative solution.

                        http://vbcity.com/forums/topic.asp?tid=76537
0
 
LVL 15

Expert Comment

by:Simon Ball
ID: 18100062
nice one.

been off the pc ill with a virus.

nice one on finding it.

instead of the xl_select down thingy,(xls.Range(stHeader, Range(stHeader).End(xlDown)).Select) have a look at worksheet.usedrange.select :-P

might be xlsusedrange.select in your ap.
0

Featured Post

On Demand Webinar - Networking for the Cloud Era

This webinar discusses:
-Common barriers companies experience when moving to the cloud
-How SD-WAN changes the way we look at networks
-Best practices customers should employ moving forward with cloud migration
-What happens behind the scenes of SteelConnect’s one-click button

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Phishing attempts can come in all forms, shapes and sizes. No matter how familiar you think you are with them, always remember to take extra precaution when opening an email with attachments or links.
In Part II of this series, I will discuss how to identify all open instances of Excel and enumerate the workbooks, spreadsheets, and named ranges within each of those instances.
Familiarize people with the process of utilizing SQL Server stored procedures from within Microsoft Access. Microsoft Access is a very powerful client/server development tool. One of the SQL Server objects that you can interact with from within Micr…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

738 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question