[Webinar] Streamline your web hosting managementRegister Today

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 230
  • Last Modified:

can not close excel

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
avoorheis
Asked:
avoorheis
  • 5
  • 4
  • 2
2 Solutions
 
Simon BallCommented:
xl.close '?
xl.Quit
    Set xls = Nothing
    Set xlw = Nothing
    Set xl = Nothing
0
 
Simon BallCommented:
sorry, xlw.close
0
 
Simon BallCommented:
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
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

 
avoorheisAuthor Commented:
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
 
Simon BallCommented:
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
 
puppydogbuddyCommented:
avoorheis,

See this link......

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


PDB
0
 
avoorheisAuthor Commented:
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
 
avoorheisAuthor Commented:
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
 
avoorheisAuthor Commented:
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
 
puppydogbuddyCommented:
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
 
Simon BallCommented:
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

[Webinar] Kill tickets & tabs using PowerShell

Are you tired of cycling through the same browser tabs everyday to close the same repetitive tickets? In this webinar JumpCloud will show how you can leverage RESTful APIs to build your own PowerShell modules to kill tickets & tabs using the PowerShell command Invoke-RestMethod.

  • 5
  • 4
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now