FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para CA-Clipper Problemilla con EXCEL
Posts: 219
Joined: Mon Dec 26, 2005 07:25 PM
Problemilla con EXCEL
Posted: Mon Jul 10, 2006 06: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:Count())+LLENO(oSheet:UsedRange: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.
Nos Gusta Programar
Posts: 711
Joined: Thu Oct 06, 2005 09:57 PM
Re: Problemilla con EXCEL
Posted: Thu Jul 13, 2006 09:32 PM

Manu

Porque no utilizas:

oExcel:ActiveSheet:Copy()

oExcel:Visible = .T.

y el usuario trabaja con una copia de la plantilla. Si la quiere grabar o no lo decide cuando vaya a cerrar la hoja.

Un saludo



Manuel
Posts: 219
Joined: Mon Dec 26, 2005 07:25 PM
Problemilla con EXCEL
Posted: Fri Jul 14, 2006 06:08 PM

Buena idea, lo probaré.

Supongo que habrá que ponerlo entre
oBook := oWord:Get("ActiveWorkBook")
y
oSheet := oWord:Get("ActiveSheet")
Es que soy novato con excel.

De todas formas, me gustaría que la hoja (factrura) se guardara, para que sea más automático y por si al cliente se le olvida.
Lo curioso es que con Word no pasa.

Gracias

Nos Gusta Programar
Posts: 711
Joined: Thu Oct 06, 2005 09:57 PM
Problemilla con EXCEL
Posted: Fri Jul 14, 2006 08:54 PM

Manu,

FUNCTION MAIN()
LOCAL cOrigen := "c:\fwh\samples\manu.xls"
LOCAL oExcel := CREATEOBJECT( "Excel.Application" )
LOCAL oWorkBook := oExcel:WorkBooks:Open(cOrigen)

oExcel:ActiveSheet:Copy()

oExcel:Visible = .T.

RETURN NIL
Un saludo



Manuel
Posts: 219
Joined: Mon Dec 26, 2005 07:25 PM
Problemilla con EXCEL
Posted: Fri Jul 14, 2006 09:29 PM

Gracias Manuel. Es una buena solucion. La utilizaré.
Si no te importa, te voy a preguntar otra cosilla. ¿se puede cambiar el nombre al documento antes de modificarlo, ampliarlo, guardarlo, etc...?

Nos Gusta Programar
Posts: 711
Joined: Thu Oct 06, 2005 09:57 PM
Problemilla con EXCEL
Posted: Sat Jul 15, 2006 04:39 AM

Manu,

Comprueba el siguiente código. Ten cuidado que la línea 6 y 7 son
la misma, pero por el ancho de este correo aparecen como dos líneas distintas:

FUNCTION MAIN()
LOCAL cOrigen := "c:\fwh\samples\manu.xls"
LOCAL cDestino := "c:\fwh\samples\manu2.xls"
LOCAL oExcel := CREATEOBJECT( "Excel.Application" )
LOCAL oWorkBook := oExcel:WorkBooks:Open(cOrigen)

oExcel:ActiveSheet:Copy( oExcel:ActiveWorkbook:Sheets [oExcel:ActiveWorkbook:Sheets:Count ] ) //misma linea anterior
oExcel:DisplayAlerts= .F. // quita ventana confirmación
oExcel:ActiveSheet:SAVEAS(cDestino)
oExcel:DisplayAlerts= .T. // pone ventana confirmación

oExcel:Visible = .T.

RETURN NIL

Un saludo



Manuel
Posts: 219
Joined: Mon Dec 26, 2005 07:25 PM
Problemilla con EXCEL
Posted: Sat Jul 15, 2006 08:39 PM

OK lo pruebo y te cuento. Gracias

Nos Gusta Programar
Posts: 17
Joined: Mon Oct 31, 2005 06:16 PM
Consulta.
Posted: Thu Jul 20, 2006 11:51 AM

Hola,

¿Dónde puedo ver un listado de todas las acciones que puedo enviar a la hoja de cálculo (ej: oExcel:ActiveSheet:SAVEAS(cDestino)
oExcel:DisplayAlerts= .T. confirmación,
etc.)
Hasta ahora, lo único que hago es, con Ole2, abrir/crear la hoja de cálculo y hacer un volcado de todo lo que tengo en el browse, ajustar las celdas y poco más). Me gustaría saber, por ejemplo, como puedo activar filtro para una o todas las columnas, configurar la página, poner títulos, etc.).

Gracias por adelantado y un saludo,
Fernando Morales del Rosario

Posts: 219
Joined: Mon Dec 26, 2005 07:25 PM
Problemilla con EXCEL
Posted: Thu Jul 20, 2006 08:05 PM

Bueno, Fernando, no soy yo el más indicado para explicarte eso, pues llevo tan sólo algunas semanas con el traspaso de datos a Excel y World. Pero si entras en cualquiera de ellos, vete a la opcion "herramientas" del menu, subopcion "Macro", y pincha en "Editor de Visual Basic".
Una vez en el Editor, pincha sobre el icono "Examinador de Objetos". Verás que te sale un listado de todos los objetos/clases que puedes emplear, con sus métodos y datos internos.
Después es cuetion de, como yo hice, buscar ejemplos en este foro y probar con algunas clases hasta dar con lo que está buscando. Ya te darás cuenta que excel es algo más complicado de entender que Word, pero una vez medio lo pillas se aclaran muchas cosas.

Animo, suerte y ... ¡A POR ELLOS! (que aqui a lo mejor te funciona).

Nos Gusta Programar

Continue the discussion