Página 1 de 1

Cerrar Excel 2.0

Publicado: Dom Dic 28, 2008 4:05 am
por zeasoftware
Uso un proceso donde tomo como PLANTILLA una hoja de un archivo de Excel, pero, al finalizar me deja el archivo PLANTILLA abierto asi como el archivo resultante.
De igual manera si tengo mas archivos abiertos, estos se ocultan y si el programa se interrupe por algun error, estos quedan ocultos, y tengo que hacer varias cosas para que vuelvan a quedar visibles.
Alguien ya ha resuelto un asunto similar?
Gracias de antemano.
--
Ramón Zea
01.993.231-62-29
http://www.paginasprodigy.com/zeasoftware/
zeasoftware@prodigy.net.mx
zeasoftware@hotmail.com
ramonzea@yahoo.com
zeasoft.movil@hotmail.com
dirza_com@hotmail.com
--

Cerrar Excel 2.0

Publicado: Lun Dic 29, 2008 1:52 am
por Fernando Leal
Ramón,
No muestras nada de código así­ que te enseño como lo hago
TRY
oExcel := GetActiveObject( "Excel.Application" )
CATCH
TRY
oExcel := CreateObject( "Excel.Application" )
CATCH
msginfo( "Excel no disponible. [" + Ole2TxtError()+ "]" )
RETURN .f.
END
END
oExcel:WorkBooks:Add( Application:cDirectory+"DOCSFormatoCI.XLS" )
oPage := oExcel:ActiveSheet()
// aFolios es un Array que en su columna 1 guarda el recno de la dbf FW
FW->( DbGoTo( aFolios[1] ) )
oPage:Range( "FOLIOSICREDIT" ):Value := FW->CPRODUCTO + " - " + Alltrim( ToString( FW->FOLSICRE ) )
oPage:Range( "FOLIOCLIENTE" ):Value := FW->NXFOLIO
oPage:Range( "NOMBRE" ):Value := FW->NXNOMBRE
oPage:Range( "RAZONSOCIAL" ):Value := FW->NXRAZONSOC
oPage:Range( "DOMICILIO" ):Value := FW->NXDOMICILI
oPage:Range( "COLONIA" ):Value := FW->NXCOLONIA
oPage:Range( "CIUDAD" ):Value := FW->NXCIUDAD
oPage:Range( "ESTADO" ):Value := Alltrim( FW->NXESTADO )
oPage:Range( "CP" ):Value := TRANS( FW->NXCP, "99999" )
oExcel:ActiveWorkBook():PrintOut() // Con esto imprimo
oExcel:ActiveWorkBook():Close( .F. ) // Con esto cierro
oExcel:Quit()
Saludos
Fernando
--

Cerrar Excel 2.0

Publicado: Lun Dic 29, 2008 3:57 am
por Rene Flores
Ramón:
No me queda muy claro lo que quieres hacer, pero puedes hacer un EXIT
PROCEDURE donde destruyas el objeto Excel, obvio, el objeto tiene que
ser publico o un AppData para que puedas ser visible en el EXIT PROCEDURE:
EXIT PROCEDURE FINAL
oExcel:Quit()
RETURN
Asi como el primer modulo que se ejectua de tu programa xHarbour es un
INIT PROCEDURE antes de ejecutar el modulo MAIN, cuando tu programa
termina, el ulitmo modulo que se ejecuta es el EXIT PROCEDURE, de esta
forma te aseguras que si tu programa aborta por alguna razon SIEMPRE se
ejecute el EXIT PROCEDURE.
Saludos
Rene Flores
http://www.ciber-tec.com
------------------------
Nos vemos en España del 22 de Enero al 1 de Febrero
mas informes: info.es@ciber-tec.com
Zea escribió:
> Uso un proceso donde tomo como PLANTILLA una hoja de un archivo de
> Excel, pero, al finalizar me deja el archivo PLANTILLA abierto asi como
> el archivo resultante.
> De igual manera si tengo mas archivos abiertos, estos se ocultan y si el
> programa se interrupe por algun error, estos quedan ocultos, y tengo que
> hacer varias cosas para que vuelvan a quedar visibles.
> Alguien ya ha resuelto un asunto similar?
>
> Gracias de antemano.
>
> --
> Ramón Zea
> 01.993.231-62-29
> http://www.paginasprodigy.com/zeasoftware/
> zeasoftware@prodigy.net.mx <mailto:zeasoftware@prodigy.net.mx>
> zeasoftware@hotmail.com <mailto:zeasoftware@hotmail.com>
> ramonzea@yahoo.com <mailto:ramonzea@yahoo.com>
> zeasoft.movil@hotmail.com <mailto:zeasoft.movil@hotmail.com>
> dirza_com@hotmail.com <mailto:dirza_com@hotmail.com>

Cerrar Excel 2.0

Publicado: Lun Dic 29, 2008 7:35 pm
por notengo
Ramón,
aparte de los consejos que te dan en los otros mensajes, recuerda que hay
que informar al recolector de basura de xHarbour que has terminado de usar
ese objeto:
oExcel := Nil
Saludos,
José Lalí­n

Cerrar Excel 2.0

Publicado: Lun Dic 29, 2008 7:45 pm
por zeasoftware
Pues la cosa es que hice a mi manera una clase, en la cual checo el excel, abro el archivo, busco la hoja, y hago mi plantilla, pero, no habia podido resolver este dato, voy a probar algo que has puesto y no conocia, pogo mi codigo para que te des una idea:
If ( oExcel := zExcelForm():New() ) == Nil
MsgStop("Su Equipo no Cuenta con el Programa Excel." + CRLF + ;
"Verifique y Vuelva a Intentar" )
Return ( Nil )
End
::oDataSet:SaveState(.t.)
::oDBFPartidas:SaveState(.t.)
With Object oExcel
:cBook := AppData:DIR_Formatos + "Formatos.xls"
:cSheet := "Pedido"
//cago los datos de los encabezados
:AddField( "docto.folio", {|| ::oDataSet:Folio })
:AddField( "docto.fecha", {|| ::oDataSet:Fecha })
:AddField( "docto.comentario", {|| ::oDataSet:Comentario })
:AddField( "docto.subtotal", {|| ::oDataSet:Subtotal })
:AddField( "docto.iva", {|| ::oDataSet:IVA })
:AddField( "docto.total", {|| ::oDataSet:Total })
:AddField( "proveedor.clave", {|| ::oDBFProveedores:Clave })
:AddField( "proveedor.nombre", {|| ::oDBFProveedores:Nombre })
:AddField( "proveedor.direccion", {|| ::oDBFProveedores:Direccion })
:AddField( "proveedor.ciudadestado", {|| ::oDBFProveedores:CiudadEdo })
:AddField( "proveedor.rfc", {|| ::oDBFProveedores:RFC })
::oDBFPartidas:Seek( ::oDataSet:Folio )
//Defino la linea detalle, y el bloque para delimitar los datos
:AddDetail("partidas", {|| ::oDBFPartidas:Folio == ::oDataSet:Folio .And. ;
!::oDBFPartidas:eof() }, ; //Lí­mite de datos
{|| ::oDBFPartidas:Skip(1) },; //forma de pasar al sig. dato
{|| ArtiSeek( Self, ::oDBFPartidas:Codigo ) } )//búsqueda de datos
:AddDetailField( "codigo", {|| ::oDBFPartidas:Codigo })
:AddDetailField( "cantidad", {|| ::oDBFPartidas:Cantidad })
:AddDetailField( "marca", {|o| o:cLinea })
:AddDetailField( "descripcion", {|o| o:cDescrip })
:AddDetailField( "unidad", {|o| o:cUniMedida })
:AddDetailField( "costo", {|| ::oDBFPartidas:Costo })
:AddDetailField( "importe", {|| ::oDBFPartidas:Costo * ::oDBFPartidas:Cantidad })
:Open()
:CopyTo()
End With
Gracias.
--
Ramón Zea
01.993.231-62-29
http://www.paginasprodigy.com/zeasoftware/
zeasoftware@prodigy.net.mx
zeasoftware@hotmail.com
ramonzea@yahoo.com
zeasoft.movil@hotmail.com
dirza_com@hotmail.com
--

Cerrar Excel 2.0

Publicado: Lun Dic 29, 2008 7:50 pm
por zeasoftware
Gracias Master, pero no es al final de la aplicacion, es al finalizar el
proceso de generar el archivo de excel, lo que quiero es que quede solo
abierto el archivo mi archiov resultante y el de la plantilla se cierre.Saludos.
--
Ramón Zea
01.993.231-62-29
http://www.paginasprodigy.com/zeasoftware/
zeasoftware@prodigy.net.mx
zeasoftware@hotmail.com
ramonzea@yahoo.com
zeasoft.movil@hotmail.com
dirza_com@hotmail.com