Page 1 of 1

Abrir mas de una Hoja de Excel

Posted: Tue Aug 16, 2011 10:41 pm
by jllinas
Hola a tod@s,

A ver si alguien ha dado con esto, por que lo que soy yo....

Necesito consultar dos hojas de excel en un proceso. Primero abro una, consulto lo que necesito (mas bien, lo almaceno en un arreglo), cierro esta hoja, abro la segunda, y consulto en esta segunda hoja, pero que me ocurre:

- Cuando "cierro" la primera hoja, esto no se hace, pues se conserva en memoria (se visualiza todavia el EXCEL trabajando en el Administrador de Tareas de Windows), y

- para cuando abro la segunda hoja, a pesar de utilizar variables para los objetos distintas, me sigue activo el primer objeto.

¿QUE PASA?

El trozo de codigo es como sigue:

Code: Select all

cLineaAh  := "oClientes:Load(),"
cLineaAh  += "AADD(aAho1,{STRZERO(VAL(GV(oHoja,nRow,1,'C')),8,0),GV(oHoja,nRow,5,'N'),GV(oHoja,nRow,6,'N')}),"
cLineaAh  += "oClientes:GoTop(),nRow++"

oExcel := TOleAuto():New( "Excel.Application" )
oExcel:WorkBooks:Open( (mio:=cGetFile( "*.XLS", "Seleccione el Archivo de Excel c/Ahorros PRIMERA quincena",,,,.T. )) )
oHoja:=oExcel:Get( "ActiveSheet" )
nRows:=oHoja:UsedRange:Rows:Count()
nRow:=6
CLIENTES->( DBEVAL( Compile(cLineaAh),,COMPILE('nRow<=nRows') ) )
Memory(-1)
oExcel:Quit()
oExcel := NIL

oExcel := TOleAuto():New( "Excel.Application" )
oExcel:WorkBooks:Open( (mio:=cGetFile( "*.XLS", "Seleccione el Archivo de Excel",,,,.T. )) )
cTime1 := TIME()
oHoja  := oExcel:Get( "ActiveSheet" )

nRows  := oHoja:UsedRange:Rows:Count()  // Cantidad de filas con datos

nRow   := 2
d1     := GV(oHoja, nRow,3, "N")  // esta variable me retorna el contenido de la primera hoja !
 

Re: Abrir mas de una Hoja de Excel

Posted: Wed Aug 17, 2011 1:39 am
by Willi Quintana
Prueba asi:

Code: Select all

......
oWorkBook:CLOSE( .F. )    //cierra el libro..
oExcel:Quit()
oExcel := NIL
........
 
Salu2

Re: Abrir mas de una Hoja de Excel

Posted: Wed Aug 17, 2011 1:53 am
by jllinas
Willy,

Gracias por tu respuesta. Cuando se ejecuta

Code: Select all

oWorkBook:Close(.F.)
Me da el error

Error 1001
DISP_E_MEMBERNOTFOUND

¿Que es esto?

Abrazos,

Re: Abrir mas de una Hoja de Excel

Posted: Wed Aug 17, 2011 2:39 am
by Willi Quintana
MMMM,,, extraño...(al menos para mi) abre y cierra de esta manera:

Code: Select all

cFile := cGetFile( "XLS (*.xls)|*.xls| XLSX (*.xlsx)|*.xlsx", ;
                     "Seleccione Lista de Precios en Excel", 1 )

cFile := ALLTRIM(cFile)
If EMPTY(cFile)
  Return(.f.)
EndIF

oExcel := TOleAuto():New( "Excel.Application" )
oExcel:Visible := .f. // .t. por si quieres ver la hoja abierta
oWorkbook      := oExcel:WorkBooks:OPEN(cFile)
oHoja          := oExcel:Get( "ActiveSheet" )

nRows := oHoja:UsedRange:Rows:Count()
...
..
.
..
...
oWorkBook:CLOSE( .F. )   
oExcel:Quit()
oExcel := NIL


 

Re: Abrir mas de una Hoja de Excel

Posted: Wed Aug 17, 2011 2:56 am
by jllinas
Willy,

Gracias por el detalle. No estaba utilizando el objeto oWorkBook.

Lo pruebo y te aviso.

Abazos,