Solved

can not close excel

Posted on 2006-11-28
11
218 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
  • 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
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

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

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

As tax season makes its return, so does the increase in cyber crime and tax refund phishing that comes with it
Preparing an email is something we should all take special care with – especially when the email is for somebody you may not know very well. The pressures of everyday working life stacked with a hectic office environment can make this a real challen…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
Basics of query design. Shows you how to construct a simple query by adding tables, perform joins, defining output columns, perform sorting, and apply criteria.

685 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