by Leon DeBurgh » Wed May 02, 2007 6:42 pm
Bajé y compilé con la librería, los errores desaparecieron, pero me queda un problema, el archivo excel no lo genera y el programa desaparece abruptamente... por si las dudas, posteo la línea en que hago la ejecución de la función, y el procedimiento que genera el cuadro excel, si encuentran algo raro, por favor, avísenme... Atentamente, Leo.
Aquí Ejecuto la función.
Public Before:=CurDrive() + ":\" + CurDir()
REDEFINE BTNBMP ID 120 OF oDlg File "ToExcel.BMP" NoBorder;
Tooltip "Envía Libro de Ventas a Excel" Action (_LF_Excel_(oDbf,_Titulo),oBrw:SetFocus(),oBrw:nRowPos:=1, oBrw:Refresh(),Open_XLS("D:\TempXLS\LIbroF.XLS"),lChDir(Before))
Acá, se ejecuta la construcción del cuadro excel...
#include "fivewin.ch"
#include "FileXLS.ch"
#define BORDER_UP nOr( BORDER_TOP )
#define BORDER_DOWN nOr( BORDER_BOTTOM )
#DEFINE TRUE .T.
#DEFINE FALSE .F.
static oFileXLS
*------------------------------------------------------------------------------*
Function _LF_Excel_(oDbf,_Titulo)
Local nFont1, nFont2
Local nFormat1, nFormat2,nXlsLine:=0
Public Drive:="D:\",Directory:="TempXLS",Start:="\"
lChDir("D:\")
lMkDir("TempXLS")
lChDir("TempXLS")
DEFINE XLS FONT nFont1 NAME "Arial" HEIGHT 12 BOLD
DEFINE XLS FONT nFont2 NAME "Arial"
DEFINE XLS FORMAT nFormat1 PICTURE 'dd-mmm-yyyy'
DEFINE XLS FORMAT nFormat2 PICTURE '#,##0'
XLS oFileXLS FILE "D:\TempXLS\LibroF.xls" AUTOEXEC
XLS COL 1 WIDTH 1 OF oFileXLS
XLS COL 2 WIDTH 6 OF oFileXLS
XLS COL 3 WIDTH 12 OF oFileXLS
XLS COL 4 WIDTH 12 OF oFileXLS
XLS COL 5 WIDTH 35 OF oFileXLS
XLS COL 6 WIDTH 12 OF oFileXLS
XLS COL 7 WIDTH 12 OF oFileXLS
XLS COL 8 WIDTH 12 OF oFileXLS
XLS COL 9 WIDTH 12 OF oFileXLS
XLS COL 10 WIDTH 12 OF oFileXLS
@ 1,2 XLS SAY Alltrim((oDbf[4]:cAlias)->Razon_Soc) FONT nfont1 OF oFileXLS ALIGNAMENT ALING_LEFT
@ 2,2 XLS SAY Alltrim((oDbf[4]:cAlias)->Giro) FONT nfont2 OF oFileXLS ALIGNAMENT ALING_LEFT
@ 3,2 XLS SAY Alltrim((oDbf[4]:cAlias)->Direccion) FONT nfont2 OF oFileXLS ALIGNAMENT ALING_LEFT
@ 4,2 XLS SAY Alltrim((oDbf[4]:cAlias)->Co_Ciu) FONT nfont2 OF oFileXLS ALIGNAMENT ALING_LEFT
@ 5,2 XLS SAY "TELEFONOS "+Alltrim((oDbf[4]:cAlias)->Telefonos) FONT nfont2 OF oFileXLS ALIGNAMENT ALING_LEFT
@ 6,2 XLS SAY "R.U.T. "+(oDbf[4]:cAlias)->Rut FONT nfont2 OF oFileXLS ALIGNAMENT ALING_LEFT
@ 8,5 XLS SAY _Titulo FONT nfont1 OF oFileXLS ALIGNAMENT ALING_CENTER
@ 9,2 XLS SAY "PERIODO : "+Upper(Mes)+" DE "+Transform(_Years,"@e #,###") FONT nFont2 Of oFileXLS
@ 11,2 XLS SAY " TIPO " FONT nfont2 OF oFileXLS BORDER BORDER_UP ALIGNAMENT ALING_CENTER
@ 12,2 XLS SAY "DOCTO." FONT nfont2 OF oFileXLS BORDER BORDER_DOWN ALIGNAMENT ALING_CENTER
@ 11,3 XLS SAY "NUMERO DE" FONT nfont2 OF oFileXLS BORDER BORDER_UP ALIGNAMENT ALING_CENTER
@ 12,3 XLS SAY "DOCUMENTO" FONT nfont2 OF oFileXLS BORDER BORDER_DOWN ALIGNAMENT ALING_CENTER
@ 11,4 XLS SAY "FECHA DE" FONT nfont2 OF oFileXLS BORDER BORDER_UP ALIGNAMENT ALING_CENTER
@ 12,4 XLS SAY "EMISION " FONT nfont2 OF oFileXLS BORDER BORDER_DOWN ALIGNAMENT ALING_CENTER
@ 11,5 XLS SAY " RAZON SOCIAL " FONT nfont2 OF oFileXLS BORDER BORDER_UP ALIGNAMENT ALING_CENTER
@ 12,5 XLS SAY " CLIENTE " FONT nfont2 OF oFileXLS BORDER BORDER_DOWN ALIGNAMENT ALING_CENTER
@ 11,6 XLS SAY "R.U.T." FONT nfont2 OF oFileXLS BORDER BORDER_UP ALIGNAMENT ALING_CENTER
@ 12,6 XLS SAY " " FONT nfont2 OF oFileXLS BORDER BORDER_DOWN ALIGNAMENT ALING_CENTER
@ 11,7 XLS SAY "EXENTO" FONT nfont2 OF oFileXLS BORDER BORDER_UP ALIGNAMENT ALING_CENTER
@ 12,7 XLS SAY " " FONT nfont2 OF oFileXLS BORDER BORDER_DOWN ALIGNAMENT ALING_CENTER
@ 11,8 XLS SAY "NETO " FONT nfont2 OF oFileXLS BORDER BORDER_UP ALIGNAMENT ALING_CENTER
@ 12,8 XLS SAY " " FONT nfont2 OF oFileXLS BORDER BORDER_DOWN ALIGNAMENT ALING_CENTER
@ 11,9 XLS SAY "I.V.A. " FONT nfont2 OF oFileXLS BORDER BORDER_UP ALIGNAMENT ALING_CENTER
@ 12,9 XLS SAY " " FONT nfont2 OF oFileXLS BORDER BORDER_DOWN ALIGNAMENT ALING_CENTER
@ 11,10 XLS SAY " TOTAL " FONT nfont2 OF oFileXLS BORDER BORDER_UP ALIGNAMENT ALING_CENTER
@ 12,10 XLS SAY " " FONT nfont2 OF oFileXLS BORDER BORDER_DOWN ALIGNAMENT ALING_CENTER
Select (oDbf[3]:cAlias)
(oDbf[3]:GoTop())
*XLS ROW 8 HEIGHT 22 OF oFileXLS
nXlsLine:=14
Do While !Eof()
@ nXlsLine,2 XLS SAY (oDbf[3]:cAlias)->Alf_Tipo OF oFileXLS
@ nXlsLine,3 XLS SAY (oDbf[3]:cAlias)->Alf_Num FORMAT nFormat2 OF oFileXLS
@ nXlsLine,4 XLS SAY PM_Dates((oDbf[3]:cAlias)->Alf_Fec) OF oFileXLS
@ nXlsLine,5 XLS SAY (oDbf[3]:cAlias)->Alf_RS OF oFileXLS
@ nXlsLine,6 XLS SAY IIF(!Empty((oDbf[3]:cAlias)->Alf_Rut),Pm_Point((oDbf[3]:cAlias)->Alf_Rut)," ") OF oFileXLs
@ nXlsLine,7 XLS SAY (oDbf[3]:cAlias)->Alf_Exen FORMAT nFormat2 OF oFileXLS
@ nXlsLine,8 XLS SAY (oDbf[3]:cAlias)->Alf_Neto FORMAT nFormat2 OF oFileXLS
@ nXlsLine,9 XLS SAY (oDbf[3]:cAlias)->Alf_Iva FORMAT nFormat2 OF oFileXLS
@ nXlsLine,10 XLS SAY (oDbf[3]:cAlias)->Alf_Tot FORMAT nFormat2 OF oFileXLS
Skip
nXlsLine++
EndDo
nXlsLine++
@ nXlsLine,2 XLS SAY "" OF oFileXLS BORDER BORDER_DOWN
@ nXlsLine,3 XLS SAY "" OF oFileXLS BORDER BORDER_DOWN
@ nXlsLine,4 XLS SAY "" OF oFileXLS BORDER BORDER_DOWN
@ nXlsLine,5 XLS SAY "" OF oFileXLS BORDER BORDER_DOWN
@ nXlsLine,6 XLS SAY "" OF oFileXLS BORDER BORDER_DOWN
@ nXlsLine,7 XLS SAY "" OF oFileXLS BORDER BORDER_DOWN
@ nXlsLine,8 XLS SAY "" OF oFileXLS BORDER BORDER_DOWN
@ nXlsLine,9 XLS SAY "" OF oFileXLS BORDER BORDER_DOWN
@ nXlsLine,10 XLS SAY "" OF oFileXLS BORDER BORDER_DOWN
nXlsLine++
@ nXlsLine,7 XLS SAY _EXENTO OF oFileXLS FORMAT nFormat2 BORDER_UP
@ nXlsLine,8 XLS SAY _Tot_NETO OF oFileXLS FORMAT nFormat2 BORDER_UP
@ nXlsLine,9 XLS SAY _Tot_IVA OF oFileXLS FORMAT nFormat2 BORDER_UP
@ nXlsLine,10 XLS SAY _TotALS OF oFileXLS FORMAT nFormat2 BORDER_UP
nXlsLine++
@ nXlsLine,2 XLS SAY "" OF oFileXLS BORDER BORDER_DOWN
@ nXlsLine,3 XLS SAY "" OF oFileXLS BORDER BORDER_DOWN
@ nXlsLine,4 XLS SAY "" OF oFileXLS BORDER BORDER_DOWN
@ nXlsLine,5 XLS SAY "" OF oFileXLS BORDER BORDER_DOWN
@ nXlsLine,6 XLS SAY "" OF oFileXLS BORDER BORDER_DOWN
@ nXlsLine,7 XLS SAY "" OF oFileXLS BORDER BORDER_DOWN
@ nXlsLine,8 XLS SAY "" OF oFileXLS BORDER BORDER_DOWN
@ nXlsLine,9 XLS SAY "" OF oFileXLS BORDER BORDER_DOWN
@ nXlsLine,10 XLS SAY "" OF oFileXLS BORDER BORDER_DOWN
SET XLS TO DISPLAY ;
OF oFileXLS
ENDXLS oFileXLS
Select (oDbf[3]:cAlias)
(oDbf[3]:GoTop())
Return Nil
*------------------------------------------------------------------------------*
*Apertura de Cuadro Excel mediante un objeto OLE
FUNCTION Open_XLS(FileName)
LOCAL hExcel
LOCAL hWorkbook
LOCAL hActiveWorkbook
LOCAL hSheets
LOCAL hActiveSheet
hExcel := CreateOLEObject("Excel.Application")
OLESetProperty(hExcel,"Visible",TRUE)
hWorkbook := OLEGetProperty(hExcel,"Workbooks")
OLEInvoke(hWorkbook,"Open",FileName) //& "D:\TempXLS\Card.XLS") //"D:\TempXLS\Egresos.XLS")
hActiveWorkbook := OLEGetProperty(hExcel,"ActiveWorkbook")
hSheets := OLEGetProperty(hActiveWorkbook,"Sheets")
hActiveSheet := OLEGetProperty(hExcel,"ActiveSheet")
hExcel := NIL
hWorkbook := NIL
hActiveWorkbook := NIL
hSheets := NIL
hActiveSheet := NIL
RETURN NIL
*-----------------------------------------*