Tengo una aplicacion que abre una plantilla en Excel y llena unos valores en ciertas celdas, usando la clase tExcels.
En Win xP con office 2003 corre normal y abre la hoja excel en un rango de 1 a 3 segundos.
La misma aplicacion la ejecuto en otras maquinas con Windows Vista y Excel 2007 y se demora en abrir un parto! de 3 a 7 minutos. Alguien sabe a que puede deberse? He desactivado los antivirus (McAfee) pero nada. Al parecer el problema es el Windows Vista.
Aqui mi programa, a ver si alguien me da una ayuda!
Code: Select all
#include "fivewin.ch"
//-------------------------
Static Function Main()
//-------------------------
local cFile, cFileO, cFileDest, cRuta := curDrive() + ":\" + curDir() + "\"
local cext := ".xls"
cFile := "OrdenCompra"+cext
if !file(cFile)
Msginfo("no se encontro file "+cFile,"Error")
return nil
endif
cFileDest := cRuta+"OrdCom01"+cext
lOver := .f.
if file(cFileDest)
lOver := MsgYesNo("Ya existe el archivo "+cFileDest+CRLF+"desea sobreescribirlo?","Confirme")
else
lOver := .t.
endif
if lOver
CopyFile(cFile, cFileDest)
TRY
cOrigen := cFileDest
oExcel := TExcelScript():New()
oExcel:Open( cOrigen ) // <----- aqui la demora!!!!!
oExcel:Visualizar(.f.)
oExcel:Say( 8, 6, "VALOR1" )
oExcel:Say( 9, 6, "VALOR2")
nRow := 17
nC := 0
do while nC < 25
++nC
oExcel:Say(nRow, 1, nC )
oExcel:Say(nRow, 2, "PROD1" )
oExcel:Say(nRow, 3, "DESCRIPCION1" )
nRow++
enddo
oExcel:Save()
oExcel:End(.T.) ; oExcel := NIL
CATCH oError
MsgStop(oError:Operation+CRLF+oError:Description,"Falla al cargar Excel")
END
endif
ShellExecute( , "Open", cFileDest, , , 0 )
return NIL