Page 1 of 1

How to end oExcel := TOleAuto():New( "Excel.Application" ) ?

PostPosted: Sat Apr 24, 2010 6:06 am
by ShumingWang
Hi,
oExcel := TOleAuto():New( "Excel.Application" )
oExcel:WorkBooks:Open(ALLTRIM(cfile))
oSheet := oExcel:ActiveSheet()
oExcel:quit()

but excel.exe still runnning in memory.
Thanks !
Shuming Wang

Re: How to end oExcel := TOleAuto():New( "Excel.Application" ) ?

PostPosted: Sat Apr 24, 2010 6:40 am
by anserkk
Dear Mr.Shuming Wang

Your code is working fine for me
Code: Select all  Expand view

#include "fivewin.ch"

FUNCTION MAIN

  cFile:="c:\users\anser\desktop\Test.xls"
  MsgInfo("About to create Excel object")
 
  oExcel := TOleAuto():New( "Excel.Application" )
  oExcel:WorkBooks:Open(ALLTRIM(cfile))
  oSheet := oExcel:ActiveSheet()
 
  MsgInfo("Open and Check Task Manager, you should find EXCEL.EXE in the Processes List")
 
  oExcel:quit()
 
  MsgInfo("Excel is closed. After you close this MsgBox,";
          "you will not find EXCEL.EXE in the Task Manager, Processes List")
   
RETURN NIL


Tested using Office 2007. It is also better to do a oWorkBook:Close() before the oExcel:Quit()

Code: Select all  Expand view
oWorkBook:=oExcel:WorkBooks:Open(ALLTRIM(cfile))
oWorkBook:Close()
oExcel:Quit()
 


I suggest you to check whether any previously opened Excel instances are still running in your PC, may be that could be the reason. :)

While trying to creating the excel object, It is always better to code as given below

Code: Select all  Expand view
TRY
    oExcel = GetActiveObject( "Excel.Application" )
CATCH
    TRY
        oExcel = CreateObject("Excel.Application")
    CATCH
        MsgInfo("It seems that Excel is not installed on this PC. You need Excel to continue further")
        Return .F.
    END
END
 

Regards
Anser

Re: How to end oExcel := TOleAuto():New( "Excel.Application" ) ?

PostPosted: Sat Apr 24, 2010 6:47 pm
by lailton.webmaster
It´s work fine to me.

oExcel := TOleAuto():New( "Excel.Application" )
oExcel:WorkBooks:Open(ALLTRIM(cfile))
oSheet := oExcel:ActiveSheet()
oExcel:quit()

oExcel:=Nil
Release All

:D

Re: How to end oExcel := TOleAuto():New( "Excel.Application" ) ?

PostPosted: Sun Apr 25, 2010 9:44 am
by Enrico Maria Giordano
lailton.webmaster wrote: oExcel:quit()

oExcel:=Nil
Release All


oExcel:quit() is more than enough.

EMG