Problemilla con EXCEL
Posted: Mon Jul 10, 2006 6:22 pm
Resulta que tengo una hoja Excell con comodines que sustituyo, con mi aplicación, por los valores de la Base de Datos. Después le presento al usario los resultados (la Hopja Exel) en pantalla para que compruebe que están correctos y para que añada lo que le apetezca. Previamente he guardado la Hoja con un nombre determinado, para que cuando el usuario le de al icono guardar no se cepille la plantilla inicial.
Tengo otra cosa parecida con Word que funciona sin problemas. Todo perfecto salvo en un detalle que no consigo resolver.
Cuando ya existe el fichero Excel previamente guardado, me falla el "SaveAs" del Excel. Sin embargo en Word va perfecto. (No me gustaría tener que borrar el fichero anterior a cada vez)
¿Alguna idea?
Ahí va parte del código:
oExcel := TOleAuto():New("Excel.Application")
oExcel:WorkBooks:Open(cOrig)
oBook := oWord:Get("ActiveWorkBook")
oSheet := oWord:Get("ActiveSheet")
oText := oSheet:Range("A1:"+HazLetra(oSheet:UsedRange:Columns:Count())+LLENO(oSheet:UsedRange:Rows:Count()))
FOR nCont = 1 TO Len(aDat)
....
ALGORITMO DE SUSTITUCIOIN
...
NEXT
oText:Cells(1,1):Select()
oBook:SaveAs(cDoc) // SI YA EXISTE LA HOJA "cDoc", ENTONCES ESTE METODO NO FUNCIONA ¿POR QUE?
SysRefresh()
* // ----------------------------------------------------------------------------------
oWord:Visible := .T.
oWord:Set("WindowState",3) // MAXIMIZADO
Lógicamente aquí no puedo hacer oWord:End() sinó no se mantiene el EXCEL en pantalla. Lo hago más adelante.
Tengo otra cosa parecida con Word que funciona sin problemas. Todo perfecto salvo en un detalle que no consigo resolver.
Cuando ya existe el fichero Excel previamente guardado, me falla el "SaveAs" del Excel. Sin embargo en Word va perfecto. (No me gustaría tener que borrar el fichero anterior a cada vez)
¿Alguna idea?
Ahí va parte del código:
oExcel := TOleAuto():New("Excel.Application")
oExcel:WorkBooks:Open(cOrig)
oBook := oWord:Get("ActiveWorkBook")
oSheet := oWord:Get("ActiveSheet")
oText := oSheet:Range("A1:"+HazLetra(oSheet:UsedRange:Columns:Count())+LLENO(oSheet:UsedRange:Rows:Count()))
FOR nCont = 1 TO Len(aDat)
....
ALGORITMO DE SUSTITUCIOIN
...
NEXT
oText:Cells(1,1):Select()
oBook:SaveAs(cDoc) // SI YA EXISTE LA HOJA "cDoc", ENTONCES ESTE METODO NO FUNCIONA ¿POR QUE?
SysRefresh()
* // ----------------------------------------------------------------------------------
oWord:Visible := .T.
oWord:Set("WindowState",3) // MAXIMIZADO
Lógicamente aquí no puedo hacer oWord:End() sinó no se mantiene el EXCEL en pantalla. Lo hago más adelante.