Excel process still running after program completion.

Chris chris.olekas at gmail.com
Tue Sep 11 19:29:32 CEST 2007


On Sep 11, 1:26 pm, Chris <chris.ole... at gmail.com> wrote:
> On Sep 11, 12:59 pm, "Hamilton, William " <wham... at entergy.com> wrote:
>
>
>
> > > From: Chris
>
> > > I have a python script that is driving Excel and using the win32com
> > > module. However, upon program completion there's still an Excel.exe
> > > process running in the background that I must terminate through Task
> > > Manager. Reading up on other threads indicate that maybe I still have
> > > some Excel objects referenced within my code. Is this why the process
> > > doesn't terminate?
>
> > > The related (I hope) parts of my code is here.
>
> > > x1App = Dispatch("Excel.Application")
> > > Book1 = x1App.Workbooks.Open(ExcelLogPath+"\\outputLog-template.xls")
> > > x1App.Visible = 1
> > > for sheets in Book1.Worksheets:
> > >              if sheets.Name == file_name:
> > >                       sheetExists = True
> > > if sheetExists != True:
> > >              activeSheet =
> > > Book1.Worksheets.Add(After=Book1.Worksheets(1))
> > >              activeSheet.Name = file_name
> > >              testNum[file_name] = 0
> > > Book1.Worksheets(file_name).Select()
> > > Book1.ActiveSheet.Cells(1+(testNum[file_name]*20),1).Value = "Original
> > > File Name"
> > > Book1.ActiveSheet.Cells(2+(testNum[file_name]*20),1).Value =
> > > file_name
> > > Book1.ActiveSheet.Pictures().Insert(output).Select()
> > > Book1.SaveAs(Filename=path)
> > > x1App.ActiveWorkbook.Close(SaveChanges=0)
> > > x1App.Quit()
> > > del x1App
> > > del Book1
> > > del activeSheet
>
> > > What am I missing?
>
> > In my Excel projects, I terminate it with:
>
> > xlBook.Close()
> > xlApp.Quit()
>
> > I haven't had a problem with Excel staying open after the program ends.
>
> > (On a tangent, I want to find the person who thought it was a good idea
> > to use the same symbol in a font for 1, l, and I and do some unpleasant
> > things.)
>
> > --
> > -Bill Hamilton
>
> That doesn't really fix the problem as I'm pretty sure its identical
> code for
> x1App.ActiveWorkbook.Close(SaveChanges=0)
>
> I think where my problem lies is within my for each loop where I
> search to see if the worksheet with the name already exists
> for sheets in Book1.Worksheets:
>      if sheets.Name == file_name:
>            sheetExists = True
>
> Since I'm assuming that it creates objects for each of the sheets and
> I don't delete them...

Which I'm right... I added this code and now there's no EXCEL.EXE
process after my script completes

for sheets in Book1.Worksheets:
      if sheets.Name == file_name:
            sheetExists = True
      sheets = None
      del sheets




More information about the Python-list mailing list