Page 1 of 2

Error Excel

Posted: Thu Apr 20, 2023 2:51 pm
by D.Fernandez
Amigos si me pueden ayudar les agradezco.
Tengo un cliente que lista a excel y le sale este error aleatoriamente.

Error description: Error BASE/1005 No existe la variable de instancia SIZE
Called from => SIZE()



Por favor una luz...

Gracias.
Ruben Dario Fernandez

Code: Select all | Expand

FUNCTION EXCELCUENTA(fechaini, fechafin, numedecli,logocolor) 
LOCAL xTOTI:=0 ,xxnFila:=0,xxnCol:=0, ntotalentradas:=0, ntotalsalidas:=0
local xxCO1:=0,xxCO2:=0,xxCO3:=0,xxCO4:=0,xxfec:=date(),xxdp:=0,xxhp:=0,xxdd:=0,xxhd:=0,xxDETA:=SPACE(25)
LOCAL xxhcc:=0,  xxDateDeSaldoaRetornar:=Date(), xxnElNuevoSaldo:=0, xxcuenta1,;
        xxnombresubcta, xxlhaydatos:= .F.,cNombrecuenta0:= "",lamoneda:= ""
LOCAL xXPRPRE1,xXPRMOV1, xXDBESE33,xxFila:=0 , xxColumna:= 0, xxCelda:=0, xXCLIENTE, xxNomApe:= "",xNmf:=1, xncol:=0, cArchivologo

LOCAL xXoExcel,xXoBook, xXoSheet,xXxl:=0, xXoHoja , xcHastaborde, xcnCol:="",xCOLUMNA:=0,xstrfila:="", cCuentaSub:= Space(9)

xXcuenta1 := numedecli 

XXPRPRE1:=TData():New(, "preliki")
IF XXPRPRE1:Use() 
    XXPRPRE1:SetOrder(1)
    XXPRPRE1:GOTOP()
Else
    MsgInfo( "Error aperura base de datos Cuentas", "Informe")
    RETURN(.F.)
Endif    

XXPRMOV1:=TData():New(, "jjmov")
IF XXPRMOV1:Use() 
    XXPRMOV1:SetOrder(1)
    XXPRMOV1:GOTOP()
Else
    XXPRPRE1:Close()
    MsgInfo( "Error aperura base de datos Cuentas", "Informe")
    RETURN(.F.)
Endif    
    
XXDBESE33 := TData():New(,"scta")
IF  XXDBESE33:Use() 
    XXDBESE33:SetOrder("STA")
    XXDBESE33:GOTOP()
    IF XXDBESE33:SEEK(numedecli )
        cNombrecuenta0:= XXDBESE33:SUCLINO 
        xxnombresubcta  := xXDBESE33:SUBNOM      
        cTipoMoneda:= xXDBESE33:Timon
        lamoneda:= cTipomoneda
    Else  
        MsgInfo( "No encuento la cuenta", "Error 593 de red")
        xXPRPRE1:Close()
        xXPRMOV1:Close()
        xXXDBESE33:Close()
        RETURN(.F.)
    Endif    
Else
    xXPRPRE1:Close()
    xXPRMOV1:Close()
    MsgInfo( "Error aperura base de datos Cuentas", "Informe")
    RETURN(.F.)
Endif        
XXDBESE33:Close() 



If Empty(clientegral )  
    Return(.F.) 
Endif 

xXoExcel := ExcelObj()
If xXoExcel == nil
    MsgInfo("Excel no está instalado", "Informe")     
    RETURN(.F.)
Endif   
xXoExcel := TOleAuto():New("Excel.Application")
xXoExcel:WorkBooks:Add()
xXoExcel:Sheets("Hoja1") ; xXoHoja:=xxoExcel:ActiveSheet()
xXoHoja:Cells:Font:Name := "Arial"
xXoHoja:Cells:Font:Size:= 8                     //10
xXoHoja:PageSetup:Orientation := 1
xXoExcel:DisplayAlerts := .f.

oRange:= xxoHoja:Range("B2:E2")    
oRange:MergeCells:= .T.    
oRange:HorizontalAlignment:=xlCenter

oRange:= xxoHoja:Range("B3:E3")    
oRange:MergeCells:= .T.    
oRange:HorizontalAlignment:=xlCenter

oRange:= xxoHoja:Range("B4:E4")    
oRange:MergeCells:= .T.    
oRange:HorizontalAlignment:=xlCenter

oRange:= xxoHoja:Range("B5:E5")    
oRange:MergeCells:= .T.    
oRange:HorizontalAlignment:=xlCenter

oRange:= xxoHoja:Range("B6:E6")    
oRange:MergeCells:= .T.    
oRange:HorizontalAlignment:=xlCenter

If logocolor
   xxoHoja:Shapes:AddPicture("C:\AlfaInmo\logocolor.jpg",.t.,.t.,2,2,60,40)         
Else
   xxoHoja:Shapes:AddPicture("C:\AlfaInmo\logonegro.jpg",.t.,.t.,2,2,60,40)         
Endif
   
    
//xxoHoja:Shapes:AddPicture(cArchivologo,.t.,.t.,2,2,60,40)                 //5.5
xXoHoja:Cells(2,2):Font:Name := "Verdana"   
xxoHoja:Cells(2,2):Font:Size := 12   
xxoHoja:Cells(2,2):Font:Bold := .T. 
xxoHoja:Cells(2,2):Value:= "INMOBILIARIA J&J"
xxoHoja:Cells(2,2):Font:Bold := .T.
xxoHoja:Cells(3,2):Value:= "Reporte de cuenta "+ xTrim(numedecli) + "  desde : "+  DtoC(fechaini) + "  hasta el : "+DtoC(fechafin)
xxoHoja:Cells(4,2):Value:= "Cliente : " + cNombrecuenta0


xXoHoja:Columns(1):ColumnWidth:= 10    
xXoHoja:Columns(2):ColumnWidth:= 24   
xXoHoja:Columns(3):ColumnWidth:= 10    
xXoHoja:Columns(4):ColumnWidth:= 10   
xXoHoja:Columns(5):ColumnWidth:= 10   
xXoHoja:Columns(6):ColumnWidth:= 10    

xxnElNuevoSaldo:= OTROSALDOANTERIOR(lamoneda, fechaini , fechafin , xxcuenta1 ) 

oRange:= xxoHoja:Range("B5:E5")    
oRange:MergeCells:= .T.    
oRange:HorizontalAlignment:=xlCenter
xXoHoja:Cells( 5, 2 ):HorizontalAlignment:=xlEdgeLeft 
xxoHoja:Cells(5,2):Value:= "Cuenta : " +xxcuenta1  +" "+XtRIM(xxnombresubcta)

If xTrim(cTipoMoneda)== "D"
    xxoHoja:Cells(6,2):Value:= HBA("Cuenta en dólares americanos")
Else
    xxoHoja:Cells(6,2):Value:= "Cuenta en pesos uruguayos"
Endif 

xxoHoja:Range("A7:F7"):Font:Name:= "Calibri"       
xxoHoja:Range("A7:F7"):Font:Size := 8      
xxoHoja:Range("A7:F7"):Font:Bold := .T.  
xxoHoja:Range("A7:F7"):Borders():LineStyle := 1       
xxoHoja:Range("A7:F7"):Interior:Color := CLR_YELLOW
xXoHoja:Cells( 7, 1 ):HorizontalAlignment:= -4131 
xXoHoja:Cells( 7, 3 ):HorizontalAlignment:=-4152
xXoHoja:Cells( 7, 4 ):HorizontalAlignment:=-4152 
xXoHoja:Cells( 7, 5 ):HorizontalAlignment:=-4152
xXoHoja:Cells( 7, 6 ):HorizontalAlignment:=-4152 

If xTrim(cTipoMoneda) == "D"
    xxoHoja:Cells(7,1):Value:= "Fecha"
    xxoHoja:Cells(7,2):Value:= "Detalles"
    xxoHoja:Cells(7,3):Value:= "Debe $"
    xxoHoja:Cells(7,4):Value:= "Haber $"
    xxoHoja:Cells(7,5):Value:= "Debe US$"
    xxoHoja:Cells(7,6):Value:= "Haber US$"
    xxoHoja:Cells(8,2):Value:= "Saldo anterior"

    IF xxnElNuevoSaldo < 0
        xxoHoja:Cells(8,5):NumberFormat := " ###,##0.00"    
        xxoHoja:Cells(8,5):Value:= Transform(xxnElNuevoSaldo,"9,999,999,999.99") 
    Else
        xxoHoja:Cells(8,6):NumberFormat := " ###,##0.00"    
        xxoHoja:Cells(8,6):Value:= Transform(xxnElNuevoSaldo,"9,999,999,999.99") 
    Endif 
Else
    xxoHoja:Cells(8,1):Value:= "Fecha"
    xxoHoja:Cells(8,2):Value:= "Detalles"
    xxoHoja:Cells(8,3):Value:= "Debe US$"
    xxoHoja:Cells(8,4):Value:= "Haber US$"
    xxoHoja:Cells(8,5):Value:= "Debe $"
    xxoHoja:Cells(8,6):Value:= "Haber $"
    xxoHoja:Cells(8,2):Value:= "Saldo anterior"
    IF xxnElNuevoSaldo < 0
        xxoHoja:Cells(8,5):NumberFormat := " ###,##0.00"    
        xxoHoja:Cells(8,5):Value:= Transform(xxnElNuevoSaldo,"9,999,999,999.99") 
    Else
        xxoHoja:Cells(8,6):NumberFormat := " ###,##0.00"    
        xxoHoja:Cells(8,6):Value:= Transform(xxnElNuevoSaldo,"9,999,999,999.99") 
    Endif
Endif 
SysRefresh()

xxnfila:= 8
xxPRMOV1:SetOrder("MCFE")  
xxPRMOV1:GOTOP()
IF xxPRMOV1:SEEK(alltrim(xxcuenta1 ))
        Do While !xxPRMOV1:EOF()               
            xxfec:=xxPRMOV1:MFEC
            If xxfec >= fechaini  .and. xxfec <= fechafin   .AND. Alltrim(xxPRMOV1:MPETA) == Alltrim(xxcuenta1) 
                xxdeta :=xxPRMOV1:MDESC  
                xxdp:=xxPRMOV1:MPEDEB
                xxhp:=xxPRMOV1:MPEHAB
                xxdd:=xxPRMOV1:MDODEBE
                xxhd:=xxPRMOV1:MDOHABE
                If xTrim(cTipomoneda) == "D"
                    ntotalentradas += xxhd
                    ntotalsalidas  += xxdd
                Else
                    ntotalentradas += xxdp
                    ntotalsalidas  += xxhp
                Endif
                If xTrim(cTipoMoneda )== "D"
                    xxnElNuevoSaldo :=( xxnElNuevoSaldo) + (xxdd)   + (xxhd)  
                    xxCO3+=(xxDD)
                    xxCO4+=(xxHD)
                    
                Else 
                    xxnElNuevoSaldo :=( xxnElNuevoSaldo) + (xxdp)   + (xxhp)  
                    xxCO3+=(xxDp)
                    xxCO4+=(xxHp)
                Endif
                lVi:=.t.
                If xTrim(cTipoMoneda)=="D"
                    xXnFila+=1
                    IF xxDP <> 0 .OR. xxHP <> 0 .OR. xxDD <> 0  .OR.  xxHD <> 0
                        lhaydatos := .t.
                        xXoHoja:Cells( xxnfila, 1 ):HorizontalAlignment:= -4131 
                        xxoHoja:Cells(xxnFila,1):Value:= DTOC(xXFEC)
                        xxoHoja:Cells(xxnFila,2):Value:= XtRIM(HBA(xXDETA))
                        IF xXDD <> 0
                            xxoHoja:Cells(xxnfila,3):NumberFormat := " ###,##0.00"    
                            IIF(xxdp < 0, xxoHoja:Cells(xxnFila,3):Value:= xxdp,   )
                            xxoHoja:Cells(xxnfila,5):NumberFormat := " ###,##0.00"    
                            xxoHoja:Cells(xxnFila,5):Value:= xxdd
                        Endif 
                        IF xXHD <> 0
                            xxoHoja:Cells(xxnfila,4):NumberFormat := " ###,##0.00"    
                            IIF(xxhp > 0, xxoHoja:Cells(xxnFila,4):Value:= xxhp,   )
                            xxoHoja:Cells(xxnfila,6):NumberFormat := " ###,##0.00"    
                            xxoHoja:Cells(xxnFila,6):Value:= xxhd   
                        Endif 
                    Endif
                Else 
                    xXnFila+=1
                    IF xXDP <> 0 .OR. xXHP <> 0 .OR. xXDD <> 0  .OR.  xXHD <> 0
                        lhaydatos := .t.
                        xXoHoja:Cells( xxnfila, 1 ):HorizontalAlignment:= -4131 
                        xxoHoja:Cells(xxnFila,1):Value:= DTOC(xXFEC)
                        xxoHoja:Cells(xxnFila,2):Value:= XtRIM(HBA(xXDETA))
                        IF xxDp <> 0
                            xxoHoja:Cells(xxnfila,3):NumberFormat := " ###,##0.00"    
                            IIF(xxhp < 0, xxoHoja:Cells(xxnFila,3):Value:= xxhp,   )    
                            xxoHoja:Cells(xxnfila,5):NumberFormat := " ###,##0.00"    
                            xxoHoja:Cells(xxnFila,5):Value:=xxdp
                        Endif 
                        IF xxHp <> 0
                            xxoHoja:Cells(xxnfila,4):NumberFormat := " ###,##0.00"    
                            IIF(xxhd > 0, xxoHoja:Cells(xxnFila,4):Value:= xxhd,   )    
                            xxoHoja:Cells(xxnfila,6):NumberFormat := " ###,##0.00"    
                            xxoHoja:Cells(xxnFila,6):Value:= xxhp
                        Endif 
                    Endif
                Endif 
                SysRefresh()
                xxPRMOV1:SKIP(1) 
            Else
               xxPRMOV1:SKIP(1) 
            Endif
        EndDo  
Endif
//xxnfila+=2
xxPRPRE1:SetOrder("PLCFE" )         
xxPRPRE1:GOTOP()
IF xXPRPRE1:SEEK(alltrim(xXcuenta1 ))
    Do while  !xXPRPRE1:Eof()  
        xXfec:=xXPRPRE1:pfecha
        xXpepeta:= xXPRPRE1:peta         //sub
        if (xXfec >= fechaini  .and. xXfec <= fechafin )    .AND. xXPRPRE1:PETA == xXcuenta1  
            xXdeta :=xxPRPRE1:pdeta  
            xXdp:=xXPRPRE1:pedebe
            xXhp:=xXPRPRE1:pehaber
            xXdd:=xXPRPRE1:doldeb
            xXhd:=xXPRPRE1:dolhab
            If xTrim(cTipomoneda) == "D"
                ntotalentradas += xxhd
                ntotalsalidas  += xxdd
            Else
                ntotalentradas += xxdp
                ntotalsalidas  += xxhp
            Endif
            If xTrim(cTipoMoneda) == "D"
                xXnElNuevoSaldo :=( xXnElNuevoSaldo) + (xXdd)   + (xXhd)  
                xXCO3+=(xXDD)
                xXCO4+=(xXHD)
            Else
                xXnElNuevoSaldo := (xXnElNuevoSaldo) + (xXdp)   + (xXhp) 
                xXCO3+=(xXDp)
                xXCO4+=(xXHp)
            Endif
            lVi :=.t.
            IF xXDD <> 0  .OR. xXDP <> 0 .OR. xXHP <> 0 .OR. xXHD <> 0
                xxnFila+=1
                lhaydatos := .T. 
                xXoHoja:Cells( xxnfila, 1 ):HorizontalAlignment:= -4131 
                xxoHoja:Cells(xxnFila,1):Value:= DTOC(xXFEC)
                xxoHoja:Cells(xxnFila,2):Value:=hba( XtRIM(xXDETA))

                If xTrim(cTipoMoneda) == "D"
                    IF xXDD <> 0
                        xxoHoja:Cells(xxnfila,3):NumberFormat := " ###,##0.00"    
                        IIF(xxdp < 0, xxoHoja:Cells(xxnFila,3):Value:= xxdp,   )    
                        xxoHoja:Cells(xxnfila,5):NumberFormat := " ###,##0.00"    
                        xxoHoja:Cells(xxnFila,5):Value:= xxdd
                    Endif 
                    IF xXHD <> 0
                        xxoHoja:Cells(xxnfila,4):NumberFormat := " ###,##0.00"    
                        IIF(xxhp > 0, xxoHoja:Cells(xxnFila,4):Value:= xxhp,   )    
                        xxoHoja:Cells(xxnfila,6):NumberFormat := " ###,##0.00"    
                        xxoHoja:Cells(xxnFila,6):Value:= xxhd
                    Endif
                Else 
                    IF xXDP <> 0 .OR. xXHP <> 0 .OR. xXDD <> 0  .OR.  xXHD <> 0
                        lhaydatos := .t.
                        IF xxDp <> 0
                            xxoHoja:Cells(xxnfila,3):NumberFormat := " ###,##0.00"    
                            IIF(xxdd > 0, xxoHoja:Cells(xxnFila,4):Value:= xxdd,   )    
                            xxoHoja:Cells(xxnfila,5):NumberFormat := " ###,##0.00"    
                            xxoHoja:Cells(xxnFila,5):Value:= xxdp
                        Endif 
                        IF xxHp <> 0
                            xxoHoja:Cells(xxnfila,4):NumberFormat := " ###,##0.00"    
                            IIF(xxhd > 0, xxoHoja:Cells(xxnFila,4):Value:= xxhd,   )    
                            xxoHoja:Cells(xxnfila,6):NumberFormat := " ###,##0.00"    
                            xxoHoja:Cells(xxnFila,6):Value:= xxhp 
                        Endif 
                    Endif
                Endif 

            Endif
            xxPRPRE1:SKIP(1)
        Else 
            xxPRPRE1:SKIP(1)
        Endif
    EndDo 
    xxnfila+=3  
Endif 

MsgInfo() 

If xxnElNuevoSaldo < 0
    oRange:= xxoHoja:Range("A"+xTrim(Str(xxnfila-1))+":D"+xTrim(Str(xxnfila-1)))    
    oRange:MergeCells:= .T.
    xxoHoja:Range( "A"+xTrim(Str(xxnfila-1)) + ":F"+xTrim(Str(xxnfila-1 ))):Borders():LineStyle := 1
    xXoHoja:Cells( xxnFila-1, 2 ):Font:Bold   := .T.
    xXoHoja:Cells( xxnFila-1, 2 ):Font:Italic   := .T.
    xXoHoja:Cells( xxnFila-1,5 ):Font:Bold   := .T.
    xXoHoja:Cells( xxnFila-1, 5 ):Font:Italic   := .T.
    xxoHoja:Cells(xxnFila-1,1):Value:= "Saldo ....."
    xxoHoja:Cells(xxnFila-1,5):Value:= xxnElNuevoSaldo
Else
    oRange:= xxoHoja:Range("A"+xTrim(Str(xxnfila-1))+":D"+xTrim(Str(xxnfila-1)))    
    oRange:MergeCells:= .T.
    xxoHoja:Range( "A"+xTrim(Str(xxnfila-1)) + ":F"+xTrim(Str(xxnfila-1 ))):Borders():LineStyle := 1
    xXoHoja:Cells( xxnFila-1, 2 ):Font:Bold   := .T.
    xXoHoja:Cells( xxnFila-1, 2 ):Font:Italic   := .T.
    xXoHoja:Cells( xxnFila-1, 6 ):Font:Bold   := .T.
    xXoHoja:Cells( xxnFila-1, 6 ):Font:Italic   := .T.
    xxoHoja:Cells(xxnFila-1,1):Value:= "Saldo ....."
    xxoHoja:Cells(xxnFila-1,6):Value:= xxnElNuevoSaldo
Endif 
xxnfila +=2
xxoHoja:Cells(xxnFila,6):Value:= ntotalentradas
xxnfila +=1
xxoHoja:Cells(xxnFila,6):Value:= ntotalsalidas

MsgInfo(ntotalentradas )
MsgInfo(ntotalsalidas)




XxoHoja := XxoExcel:ActiveSheet()
XxoExcel:Visible := .T.
Hb_GCall(.T.)
            
XxPRPRE1:Close()
XxPRMOV1:Close() 
SysRefresh()
    

RETURN(.F.)

Re: Error Excel

Posted: Thu Apr 20, 2023 4:13 pm
by Jimmy
hi,

it is not Method Size() itself

you need to "check" if ActiveX Object was create() :!:

Code: Select all | Expand

xXoExcel := TOleAuto():New("Excel.Application")
If xXoExcel == nil
    MsgInfo("Excel not create", "Informe")    
    RETURN(.F.)
Endif

Re: Error Excel

Posted: Thu Apr 20, 2023 5:27 pm
by D.Fernandez
Thank you, I will update my software and test in the client machine.

Regrds

Ruben Dario Fernandez

Re: Error Excel

Posted: Thu Apr 20, 2023 5:30 pm
by karinha
Ejemplo:

Download completo:

https://mega.nz/file/lRMgVB5S#paOmgDXM_ ... hoHXb-PuJE

Regards, saludos.

Re: Error Excel

Posted: Fri Apr 21, 2023 11:27 am
by paquitohm

Re: Error Excel

Posted: Fri Apr 21, 2023 2:52 pm
by D.Fernandez
Gracias karinha, tengo hecha un listado con FileXLS
que funciona bien.
Lo que pasa que el cliente se acostumbró al otro excel, *.xlsx que queda mejor.

Seguire buscanbo a ver que encuentro.

Muchas gracias.

Re: Error Excel

Posted: Fri Apr 21, 2023 2:55 pm
by karinha
D.Fernandez wrote:Gracias karinha, tengo hecha un listado con FileXLS
que funciona bien.
Lo que pasa que el cliente se acostumbró al otro excel, *.xlsx que queda mejor.

Seguire buscanbo a ver que encuentro.

Muchas gracias.
Ruben, puede muestrar un ejemplo porfa? És mejor para probar.

Mira:

https://app.box.net/s/lck9effuyn?page=3

https://forums.fivetechsupport.com/viewtopic.php?t=6849


gracias.

Saludos.

Re: Error Excel

Posted: Fri Apr 21, 2023 3:06 pm
by D.Fernandez
Gracias paquitohm, lo tengo funcionando con FilesXLS,
pero el cliente se acostumbró al *.xlsx que queda mejor y ahora quiere ese tipo de planilla.

Seguiré viendo.

Muchas Gracias.

Ruben Fernandez

Re: Error Excel

Posted: Fri Apr 21, 2023 3:10 pm
by D.Fernandez
Hola Jimmy, recien vengo de la casa del cliente, con _ tambien me salio el mismo error.

Seguire viendo.
Esto me tiene loco ya.

Muchas gracias.

Ruben Fernandez

Re: Error Excel

Posted: Fri Apr 21, 2023 3:52 pm
by karinha
Ruben, mira como lo haria:

Code: Select all | Expand

// C:\FWH..\SAMPLES\RUBENS2.PRG

FUNCTION EXCELCUENTA( fechaini, fechafin, numedecli, logocolor )

   LOCAL xTOTI := 0, xxnFila := 0, xxnCol := 0, ntotalentradas := 0, ntotalsalidas := 0
   LOCAL xxCO1 := 0, xxCO2 := 0, xxCO3 := 0, xxCO4 := 0, xxfec := Date(), xxdp := 0, xxhp := 0, xxdd := 0, xxhd := 0, xxDETA := Space( 25 )
   LOCAL xxhcc := 0,  xxDateDeSaldoaRetornar := Date(), xxnElNuevoSaldo := 0, xxcuenta1, ;
      xxnombresubcta, xxlhaydatos := .F., cNombrecuenta0 := "", lamoneda := ""
   LOCAL xXPRPRE1, xXPRMOV1, xXDBESE33, xxFila := 0, xxColumna := 0, xxCelda := 0, xXCLIENTE, xxNomApe := "", xNmf := 1, xncol := 0, cArchivologo
   LOCAL oExcel, xXoBook, xXoSheet, xXxl := 0, xXoHoja, xcHastaborde, xcnCol := "", xCOLUMNA := 0, xstrfila := "", cCuentaSub := Space( 9 )

   hb_gcAll( .F. )  // limpia basura. caso tenga.m aqui si Ruben.

   xXcuenta1 := numedecli

   XXPRPRE1 := TData():New(, "preliki" )

   IF XXPRPRE1:Use()
      XXPRPRE1:SetOrder( 1 )
      XXPRPRE1:GOTOP()
   ELSE
      MsgInfo( "Error aperura base de datos Cuentas", "Informe" )
      RETURN( .F. )
   ENDIF

   XXPRMOV1 := TData():New(, "jjmov" )

   IF XXPRMOV1:Use()
      XXPRMOV1:SetOrder( 1 )
      XXPRMOV1:GOTOP()
   ELSE
      XXPRPRE1:Close()
      MsgInfo( "Error aperura base de datos Cuentas", "Informe" )
      RETURN( .F. )
   ENDIF

   XXDBESE33 := TData():New(, "scta" )

   IF XXDBESE33:Use()
      XXDBESE33:SetOrder( "STA" )
      XXDBESE33:GOTOP()

      IF XXDBESE33:SEEK( numedecli )
         cNombrecuenta0 := XXDBESE33:SUCLINO
         xxnombresubcta  := xXDBESE33:SUBNOM
         cTipoMoneda := xXDBESE33:Timon
         lamoneda := cTipomoneda
      ELSE
         MsgInfo( "No encuento la cuenta", "Error 593 de red" )
         xXPRPRE1:Close()
         xXPRMOV1:Close()
         xXXDBESE33:Close()
         RETURN( .F. )
      ENDIF

   ELSE

      xXPRPRE1:Close()
      xXPRMOV1:Close()
      MsgInfo( "Error aperura base de datos Cuentas", "Informe" )
      RETURN( .F. )
   ENDIF

   XXDBESE33:Close()

   IF Empty( clientegral )
      Return( .F. )
   ENDIF

   oExcel := ExcelObj()

   IF oExcel == nil
      MsgInfo( "Excel no está instalado", "Informe" )
      RETURN( .F. )
   ENDIF

   TRY

      oExcel := TOleAuto():New( "Excel.Application" )

   CATCH

      TRY

         oExcel = CreateObject( "Excel.Application" )

      CATCH

         /*
         MsgInfo( "Excel is not installed on this PC. " + ;
                  "You need Excel to continue", "Ooooopppsss" )
         */

         MsgInfo( "Excel no está instalado", "Informe" )

         RETURN( .F. )

      END

   END

   oExcel:WorkBooks:Add()

   oExcel:DisplayAlerts := .F.
   oExcel:Visible       := .T.

   // oWorksheet := oExcel:Get( "ActiveSheet" )
   oExcel:Sheets( "Hoja1" ) ; xXoHoja := oExcel:ActiveSheet()

   xXoHoja:Cells:Font:Name := "Arial"
   xXoHoja:Cells:Font:Size := 8                     // 10
   xXoHoja:PageSetup:Orientation := 1

   oRange := xxoHoja:Range( "B2:E2" )
   oRange:MergeCells := .T.
   oRange:HorizontalAlignment := xlCenter

   oRange := xxoHoja:Range( "B3:E3" )
   oRange:MergeCells := .T.
   oRange:HorizontalAlignment := xlCenter

   oRange := xxoHoja:Range( "B4:E4" )
   oRange:MergeCells := .T.
   oRange:HorizontalAlignment := xlCenter

   oRange := xxoHoja:Range( "B5:E5" )
   oRange:MergeCells := .T.
   oRange:HorizontalAlignment := xlCenter

   oRange := xxoHoja:Range( "B6:E6" )
   oRange:MergeCells := .T.
   oRange:HorizontalAlignment := xlCenter

   IF logocolor
      xxoHoja:Shapes:AddPicture( "C:\AlfaInmo\logocolor.jpg", .T., .T., 2, 2, 60, 40 )
   ELSE
      xxoHoja:Shapes:AddPicture( "C:\AlfaInmo\logonegro.jpg", .T., .T., 2, 2, 60, 40 )
   ENDIF

   // xxoHoja:Shapes:AddPicture(cArchivologo,.t.,.t.,2,2,60,40)                 //5.5
   xXoHoja:Cells( 2, 2 ):Font:Name := "Verdana"
   xxoHoja:Cells( 2, 2 ):Font:Size := 12
   xxoHoja:Cells( 2, 2 ):Font:Bold := .T.
   xxoHoja:Cells( 2, 2 ):Value := "INMOBILIARIA J&J"
   xxoHoja:Cells( 2, 2 ):Font:Bold := .T.
   xxoHoja:Cells( 3, 2 ):Value := "Reporte de cuenta " + xTrim( numedecli ) + "  desde : " +  DToC( fechaini ) + "  hasta el : " + DToC( fechafin )
   xxoHoja:Cells( 4, 2 ):Value := "Cliente : " + cNombrecuenta0


   xXoHoja:Columns( 1 ):ColumnWidth := 10
   xXoHoja:Columns( 2 ):ColumnWidth := 24
   xXoHoja:Columns( 3 ):ColumnWidth := 10
   xXoHoja:Columns( 4 ):ColumnWidth := 10
   xXoHoja:Columns( 5 ):ColumnWidth := 10
   xXoHoja:Columns( 6 ):ColumnWidth := 10

   // Que hace?
   xxnElNuevoSaldo := OTROSALDOANTERIOR( lamoneda, fechaini, fechafin, xxcuenta1 )

   oRange := xxoHoja:Range( "B5:E5" )
   oRange:MergeCells := .T.
   oRange:HorizontalAlignment := xlCenter
   xXoHoja:Cells( 5, 2 ):HorizontalAlignment := xlEdgeLeft
   xxoHoja:Cells( 5, 2 ):Value := "Cuenta : " + xxcuenta1  + " " + XtRIM( xxnombresubcta )

   IF xTrim( cTipoMoneda ) == "D"
      xxoHoja:Cells( 6, 2 ):Value := HBA( "Cuenta en dólares americanos" )
   ELSE
      xxoHoja:Cells( 6, 2 ):Value := "Cuenta en pesos uruguayos"
   ENDIF

   xxoHoja:Range( "A7:F7" ):Font:Name := "Calibri"
   xxoHoja:Range( "A7:F7" ):Font:Size := 8
   xxoHoja:Range( "A7:F7" ):Font:Bold := .T.
   xxoHoja:Range( "A7:F7" ):Borders():LineStyle := 1
   xxoHoja:Range( "A7:F7" ):Interior:COLOR := CLR_YELLOW
   xXoHoja:Cells( 7, 1 ):HorizontalAlignment := -4131
   xXoHoja:Cells( 7, 3 ):HorizontalAlignment := -4152
   xXoHoja:Cells( 7, 4 ):HorizontalAlignment := -4152
   xXoHoja:Cells( 7, 5 ):HorizontalAlignment := -4152
   xXoHoja:Cells( 7, 6 ):HorizontalAlignment := -4152

   IF xTrim( cTipoMoneda ) == "D"
      xxoHoja:Cells( 7, 1 ):Value := "Fecha"
      xxoHoja:Cells( 7, 2 ):Value := "Detalles"
      xxoHoja:Cells( 7, 3 ):Value := "Debe $"
      xxoHoja:Cells( 7, 4 ):Value := "Haber $"
      xxoHoja:Cells( 7, 5 ):Value := "Debe US$"
      xxoHoja:Cells( 7, 6 ):Value := "Haber US$"
      xxoHoja:Cells( 8, 2 ):Value := "Saldo anterior"

      IF xxnElNuevoSaldo < 0
         xxoHoja:Cells( 8, 5 ):NumberFormat := " ###,##0.00"
         xxoHoja:Cells( 8, 5 ):Value := Transform( xxnElNuevoSaldo, "9,999,999,999.99" )
      ELSE
         xxoHoja:Cells( 8, 6 ):NumberFormat := " ###,##0.00"
         xxoHoja:Cells( 8, 6 ):Value := Transform( xxnElNuevoSaldo, "9,999,999,999.99" )
      ENDIF

   ELSE

      xxoHoja:Cells( 8, 1 ):Value := "Fecha"
      xxoHoja:Cells( 8, 2 ):Value := "Detalles"
      xxoHoja:Cells( 8, 3 ):Value := "Debe US$"
      xxoHoja:Cells( 8, 4 ):Value := "Haber US$"
      xxoHoja:Cells( 8, 5 ):Value := "Debe $"
      xxoHoja:Cells( 8, 6 ):Value := "Haber $"
      xxoHoja:Cells( 8, 2 ):Value := "Saldo anterior"

      IF xxnElNuevoSaldo < 0
         xxoHoja:Cells( 8, 5 ):NumberFormat := " ###,##0.00"
         xxoHoja:Cells( 8, 5 ):Value := Transform( xxnElNuevoSaldo, "9,999,999,999.99" )
      ELSE
         xxoHoja:Cells( 8, 6 ):NumberFormat := " ###,##0.00"
         xxoHoja:Cells( 8, 6 ):Value := Transform( xxnElNuevoSaldo, "9,999,999,999.99" )
      ENDIF

   ENDIF

   // SysRefresh() // no use aqui

   xxnfila := 8

   xxPRMOV1:SetOrder( "MCFE" )
   xxPRMOV1:GOTOP()

   IF xxPRMOV1:SEEK( AllTrim( xxcuenta1 ) )

      WHILE( .NOT. xxPRMOV1:EOF() )

         SYSREFRESH() // AQUI si.

         xxfec := xxPRMOV1:MFEC

         IF xxfec >= fechaini  .AND. xxfec <= fechafin   .AND. AllTrim( xxPRMOV1:MPETA ) == AllTrim( xxcuenta1 )

            xxdeta := xxPRMOV1:MDESC
            xxdp := xxPRMOV1:MPEDEB
            xxhp := xxPRMOV1:MPEHAB
            xxdd := xxPRMOV1:MDODEBE
            xxhd := xxPRMOV1:MDOHABE

            IF xTrim( cTipomoneda ) == "D"
               ntotalentradas += xxhd
               ntotalsalidas  += xxdd
            ELSE
               ntotalentradas += xxdp
               ntotalsalidas  += xxhp
            ENDIF

            IF xTrim( cTipoMoneda ) == "D"
               xxnElNuevoSaldo := ( xxnElNuevoSaldo ) + ( xxdd )   + ( xxhd )
               xxCO3 += ( xxDD )
               xxCO4 += ( xxHD )

            ELSE
               xxnElNuevoSaldo := ( xxnElNuevoSaldo ) + ( xxdp )   + ( xxhp )
               xxCO3 += ( xxDp )
               xxCO4 += ( xxHp )
            ENDIF

            lVi := .T.

            IF xTrim( cTipoMoneda ) == "D"

               xXnFila += 1

               IF xxDP <> 0 .OR. xxHP <> 0 .OR. xxDD <> 0  .OR.  xxHD <> 0

                  lhaydatos := .T.
                  xXoHoja:Cells( xxnfila, 1 ):HorizontalAlignment := -4131
                  xxoHoja:Cells( xxnFila, 1 ):Value := DToC( xXFEC )
                  xxoHoja:Cells( xxnFila, 2 ):Value := XtRIM( HBA( xXDETA ) )

                  IF xXDD <> 0
                     xxoHoja:Cells( xxnfila, 3 ):NumberFormat := " ###,##0.00"
                     iif( xxdp < 0, xxoHoja:Cells( xxnFila, 3 ):Value := xxdp,   )
                     xxoHoja:Cells( xxnfila, 5 ):NumberFormat := " ###,##0.00"
                     xxoHoja:Cells( xxnFila, 5 ):Value := xxdd
                  ENDIF

                  IF xXHD <> 0
                     xxoHoja:Cells( xxnfila, 4 ):NumberFormat := " ###,##0.00"
                     iif( xxhp > 0, xxoHoja:Cells( xxnFila, 4 ):Value := xxhp,   )
                     xxoHoja:Cells( xxnfila, 6 ):NumberFormat := " ###,##0.00"
                     xxoHoja:Cells( xxnFila, 6 ):Value := xxhd
                  ENDIF

               ENDIF

            ELSE

               xXnFila += 1

               IF xXDP <> 0 .OR. xXHP <> 0 .OR. xXDD <> 0  .OR.  xXHD <> 0

                  lhaydatos := .T.

                  xXoHoja:Cells( xxnfila, 1 ):HorizontalAlignment := -4131
                  xxoHoja:Cells( xxnFila, 1 ):Value := DToC( xXFEC )
                  xxoHoja:Cells( xxnFila, 2 ):Value := XtRIM( HBA( xXDETA ) )

                  IF xxDp <> 0

                     xxoHoja:Cells( xxnfila, 3 ):NumberFormat := " ###,##0.00"
                     iif( xxhp < 0, xxoHoja:Cells( xxnFila, 3 ):Value := xxhp,   )
                     xxoHoja:Cells( xxnfila, 5 ):NumberFormat := " ###,##0.00"
                     xxoHoja:Cells( xxnFila, 5 ):Value := xxdp

                  ENDIF

                  IF xxHp <> 0

                     xxoHoja:Cells( xxnfila, 4 ):NumberFormat := " ###,##0.00"
                     iif( xxhd > 0, xxoHoja:Cells( xxnFila, 4 ):Value := xxhd,   )
                     xxoHoja:Cells( xxnfila, 6 ):NumberFormat := " ###,##0.00"
                     xxoHoja:Cells( xxnFila, 6 ):Value := xxhp

                  ENDIF

               ENDIF

            ENDIF

            // SysRefresh() // no use aqui

            // xxPRMOV1:SKIP( 1 )

            SKIP

         ELSE

            // xxPRMOV1:SKIP( 1 )

            SKIP

         ENDIF

      ENDDO

   ENDIF

   // xxnfila+=2

   xxPRPRE1:SetOrder( "PLCFE" ) // SET ORDER TO... 01,02,03,04, etc.

   GO TOP

   //xxPRPRE1:GOTOP()

   IF xXPRPRE1:SEEK( AllTrim( xXcuenta1 ) )

      WHILE( .NOT. xXPRPRE1:EOF() )

         SYSREFRESH() // AQUI si.

         xXfec := xXPRPRE1:pfecha
         xXpepeta := xXPRPRE1:peta         // sub

         IF ( xXfec >= fechaini  .AND. xXfec <= fechafin )    .AND. xXPRPRE1:PETA == xXcuenta1

            xXdeta := xxPRPRE1:pdeta
            xXdp := xXPRPRE1:pedebe
            xXhp := xXPRPRE1:pehaber
            xXdd := xXPRPRE1:doldeb
            xXhd := xXPRPRE1:dolhab

            IF xTrim( cTipomoneda ) == "D"
               ntotalentradas += xxhd
               ntotalsalidas  += xxdd
            ELSE
               ntotalentradas += xxdp
               ntotalsalidas  += xxhp
            ENDIF

            IF xTrim( cTipoMoneda ) == "D"
               xXnElNuevoSaldo := ( xXnElNuevoSaldo ) + ( xXdd )   + ( xXhd )
               xXCO3 += ( xXDD )
               xXCO4 += ( xXHD )
            ELSE
               xXnElNuevoSaldo := ( xXnElNuevoSaldo ) + ( xXdp )   + ( xXhp )
               xXCO3 += ( xXDp )
               xXCO4 += ( xXHp )
            ENDIF

            lVi := .T.

            IF xXDD <> 0  .OR. xXDP <> 0 .OR. xXHP <> 0 .OR. xXHD <> 0

               xxnFila += 1
               lhaydatos := .T.

               xXoHoja:Cells( xxnfila, 1 ):HorizontalAlignment := -4131
               xxoHoja:Cells( xxnFila, 1 ):Value := DToC( xXFEC )
               xxoHoja:Cells( xxnFila, 2 ):Value := hba( XtRIM( xXDETA ) )

               IF xTrim( cTipoMoneda ) == "D"

                  IF xXDD <> 0
                     xxoHoja:Cells( xxnfila, 3 ):NumberFormat := " ###,##0.00"
                     iif( xxdp < 0, xxoHoja:Cells( xxnFila, 3 ):Value := xxdp,   )
                     xxoHoja:Cells( xxnfila, 5 ):NumberFormat := " ###,##0.00"
                     xxoHoja:Cells( xxnFila, 5 ):Value := xxdd
                  ENDIF

                  IF xXHD <> 0
                     xxoHoja:Cells( xxnfila, 4 ):NumberFormat := " ###,##0.00"
                     iif( xxhp > 0, xxoHoja:Cells( xxnFila, 4 ):Value := xxhp,   )
                     xxoHoja:Cells( xxnfila, 6 ):NumberFormat := " ###,##0.00"
                     xxoHoja:Cells( xxnFila, 6 ):Value := xxhd
                  ENDIF

               ELSE

                  IF xXDP <> 0 .OR. xXHP <> 0 .OR. xXDD <> 0  .OR.  xXHD <> 0

                     lhaydatos := .T.

                     IF xxDp <> 0
                        xxoHoja:Cells( xxnfila, 3 ):NumberFormat := " ###,##0.00"
                        iif( xxdd > 0, xxoHoja:Cells( xxnFila, 4 ):Value := xxdd,   )
                        xxoHoja:Cells( xxnfila, 5 ):NumberFormat := " ###,##0.00"
                        xxoHoja:Cells( xxnFila, 5 ):Value := xxdp
                     ENDIF

                     IF xxHp <> 0

                        xxoHoja:Cells( xxnfila, 4 ):NumberFormat := " ###,##0.00"
                        iif( xxhd > 0, xxoHoja:Cells( xxnFila, 4 ):Value := xxhd,   )
                        xxoHoja:Cells( xxnfila, 6 ):NumberFormat := " ###,##0.00"
                        xxoHoja:Cells( xxnFila, 6 ):Value := xxhp

                     ENDIF

                  ENDIF

               ENDIF

            ENDIF

            // xxPRPRE1:SKIP( 1 )

            SKIP

         ELSE

            // xxPRPRE1:SKIP( 1 )

            SKIP

         ENDIF

      ENDDO

      xxnfila += 3

   ENDIF

   // MsgInfo()  // ??? Para?

   IF xxnElNuevoSaldo < 0

      oRange := xxoHoja:Range( "A" + xTrim( Str( xxnfila - 1 ) ) + ":D" + xTrim( Str( xxnfila - 1 ) ) )
      oRange:MergeCells := .T.
      xxoHoja:Range( "A" + xTrim( Str( xxnfila - 1 ) ) + ":F" + xTrim( Str( xxnfila - 1 ) ) ):Borders():LineStyle := 1
      xXoHoja:Cells( xxnFila - 1, 2 ):Font:Bold   := .T.
      xXoHoja:Cells( xxnFila - 1, 2 ):Font:Italic   := .T.
      xXoHoja:Cells( xxnFila - 1, 5 ):Font:Bold   := .T.
      xXoHoja:Cells( xxnFila - 1, 5 ):Font:Italic   := .T.
      xxoHoja:Cells( xxnFila - 1, 1 ):Value := "Saldo ....."
      xxoHoja:Cells( xxnFila - 1, 5 ):Value := xxnElNuevoSaldo

   ELSE

      oRange := xxoHoja:Range( "A" + xTrim( Str( xxnfila - 1 ) ) + ":D" + xTrim( Str( xxnfila - 1 ) ) )
      oRange:MergeCells := .T.

      xxoHoja:Range( "A" + xTrim( Str( xxnfila - 1 ) ) + ":F" + xTrim( Str( xxnfila - 1 ) ) ):Borders():LineStyle := 1
      xXoHoja:Cells( xxnFila - 1, 2 ):Font:Bold   := .T.
      xXoHoja:Cells( xxnFila - 1, 2 ):Font:Italic   := .T.
      xXoHoja:Cells( xxnFila - 1, 6 ):Font:Bold   := .T.
      xXoHoja:Cells( xxnFila - 1, 6 ):Font:Italic   := .T.
      xxoHoja:Cells( xxnFila - 1, 1 ):Value := "Saldo ....."
      xxoHoja:Cells( xxnFila - 1, 6 ):Value := xxnElNuevoSaldo

   ENDIF

   xxnfila += 2

   xxoHoja:Cells( xxnFila, 6 ):Value := ntotalentradas

   xxnfila += 1
   xxoHoja:Cells( xxnFila, 6 ):Value := ntotalsalidas

   //MsgInfo( ntotalentradas )
   //MsgInfo( ntotalsalidas )

   XxoHoja := oExcel:ActiveSheet()

   oExcel:Visible := .T.

   // hb_gcAll( .T. )  // no use aqui

   XxPRPRE1:Close()  // Porque?
   XxPRMOV1:Close()  // Porque?

   // SysRefresh() NO USE AQUI

// RETURN( .F. )  // NO ES UN VALID()

RETURN NIL

// FIN / END
 
Regards, saludos.

Re: Error Excel

Posted: Fri Apr 21, 2023 4:34 pm
by Jimmy
hi,
D.Fernandez wrote:recien vengo de la casa del cliente, con _ tambien me salio el mismo error.
when Excel Object is valid i wonder that it fail when access Method

---

what OS and which Office / Excel Version :?:
does it crash when call Excel 1st Time or "later" when call Excel again :?:

general you can put all into a BEGIN SEQUENCE / END to recover when get Error

Re: Error Excel

Posted: Fri Apr 21, 2023 5:19 pm
by D.Fernandez
Hi Jimmy, I tell you later, don't know.

It's very strange.

With my Winn 11 and Office 365, nothing happend.

Thank you very much

Best regards

Ruben Fernandez

Re: Error Excel

Posted: Sat Apr 22, 2023 3:48 pm
by rubenfernandez01
Hi Jimmy, I believe that the problem in win XP, because in win 11 run ok.

Enviado desde mi 21081111RG mediante Tapatalk

Re: Error Excel

Posted: Sun Apr 23, 2023 7:30 am
by Jimmy
hi,
rubenfernandez01 wrote:believe that the problem in win XP, because in win 11 run ok.
i wonder that People still use Windows XP ...

you can try to "check" if Property / Method exist in older Excel Version

Code: Select all | Expand

FUNCTION __objHasData( oObject, cSymbol )

   IF ! HB_ISOBJECT( oObject ) .OR. ! HB_ISSTRING( cSymbol )
      __errRT_BASE( EG_ARG, 3101, , ProcName( 0 ) )
   ENDIF

RETURN ;
   __objHasMsg( oObject, cSymbol ) .AND. ;
   __objHasMsg( oObject, "_" + cSymbol )

Code: Select all | Expand

FUNCTION __objHasMethod( oObject, cSymbol )

   IF ! HB_ISOBJECT( oObject ) .OR. ! HB_ISSTRING( cSymbol )
      __errRT_BASE( EG_ARG, 3101, , ProcName( 0 ) )
   ENDIF

RETURN ;
   __objHasMsg( oObject, cSymbol ) .AND. ;
   ! __objHasMsg( oObject, "_" + cSymbol )

Re: Error Excel

Posted: Sun Apr 23, 2023 2:12 pm
by rubenfernandez01
Jimmy, thanks, I will try.

Regards,
Ruben Dario Fernandez

Enviado desde mi 21081111RG mediante Tapatalk