Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

can not close excel

Posted on 2006-11-28
11
Medium Priority
?
223 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
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 1050 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 450 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

Microsoft Certification Exam 74-409

Veeam® is happy to provide the Microsoft community with a study guide prepared by MVP and MCT, Orin Thomas. This guide will take you through each of the exam objectives, helping you to prepare for and pass the examination.

Question has a verified solution.

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

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.
This article describes a method of delivering Word templates for use in merging Access data to Word documents, that requires no computer knowledge on the part of the recipient -- the templates are saved in table fields, and are extracted and install…
In Microsoft Access, learn how to “cascade” or have the displayed data of one combo control depend upon what’s entered in another. Base the dependent combo on a query for its row source: Add a reference to the first combo on the form as criteria i…
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

722 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