FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Clase TExcelScript de Viktor
Posts: 1088
Joined: Fri Oct 07, 2005 03:33 PM
Clase TExcelScript de Viktor
Posted: Tue Jun 19, 2007 06:44 PM
Holas,

en lo que vengo viendo de mi problema con Excel, he bajado la clase de Viktor de las utilizadades del foro, del encabezado del PRG


* Clase TExcelScript v1.14 06-Feb-2004
*
* Esta Clase usa la Libreria Ole2 de José F. Giménez
*
* Autor: Víctor Manuel Tomas Díaz [Vikthor]

Espero que sea la ultima. Tengo los siguientes problemas, al inicial me da el error :

No está Excel Instalado en está PC

Tengo instalado el office 2003, pero igual pasa el mensaje y se puede trabajar.

No me funcionan los metodos :save() ni :saveas(), del error.log

Stack Calls
===========
Called from: win32ole.prg => TOLEAUTO:SAVE(0)
Called from: Texcels.prg => (b)TEXCELSCRIPT:TEXCELSCRIPT(132)
Called from: => TEXCELSCRIPT:SAVE(0)
Called from: test2.prg => MAIN(30)

Stack Calls
===========
Called from: win32ole.prg => TOLEAUTO:SAVEAS(0)
Called from: Texcels.prg => (b)TEXCELSCRIPT:TEXCELSCRIPT(133)
Called from: => TEXCELSCRIPT:SAVEAS(0)
Called from: test2.prg => MAIN(32)

El ejemplo es simplie


#include "FiveWin.ch"

static oExcel

FUNCTION main()
LOCAL cOrigen := cFilePath( GetModuleFileName( GetInstance() )) + "Test.xls", n,;
destino := cFilePath( GetModuleFileName( GetInstance() )) + "Test1.xls"

oExcel := TExcelScript():New()

oExcel:Open( cOrigen )

oExcel:Visualizar(.F.)

oExcel:Say( 1, 1, 10, "ARIAL", 10, .T., .T. )
oExcel:Say( 2, 1, 20, "ARIAL", 12, .T., .T. )
oExcel:Say( 3, 1, 30, "ARIAL", 14, .T., .T. )

// oExcel:Save()
oExcel:SaveAs( destino )

oExcel:End(.F.)

RETURN ( .T. )



Alguna ayuda,

saludos

Marcelo
Posts: 1144
Joined: Mon Feb 05, 2007 07:15 PM
Clase TExcelScript de Viktor
Posted: Tue Jun 19, 2007 07:06 PM

Marcelo,

que compilador usas? xhb o Hb.

saludos.

Cesar Cortes Cruz

SysCtrl Software

Mexico



' Sin +- FWH es mejor "
Posts: 1088
Joined: Fri Oct 07, 2005 03:33 PM
Clase TExcelScript de Viktor
Posted: Tue Jun 19, 2007 07:10 PM

Hola,

utilizo xHarbour

saludos

Marcelo

Posts: 1144
Joined: Mon Feb 05, 2007 07:15 PM
Clase TExcelScript de Viktor
Posted: Tue Jun 19, 2007 07:30 PM

Marcelo yo tuve un problema parecedio ,

hice un cambio en el metodo NEW de la class

aqui un pedazo de codigo

METHOD NEW() CLASS TExcelScript
::lExcel := .T.
#IFDEF XHARBOUR
TRY
//::oExcel := TOleAuto():New("Excel.Application") //funciona bien.
// getactiveOb marca error si el archivo esta abierto ..
// ::oExcel := GetActiveObject( "Excel.Application" )
::oExcel := CreateObject( "Excel.Application" ) //este funciona bien
CATCH
TRY
::oExcel := CreateObject( "Excel.Application" ) //no trabaja
CATCH
Alert( "No está Excel Instalado en está Pc." )
::lExcel := .F.
END
END
#ELSE
::oExcel := TOleAuto():New( Excel.Application ) //no trabaja
IF ::oExcel:hObj == 0
Alert( "No está Excel Instalado en está Pc." )
::lExcel := .F.
ENDIF

#ENDIF
::oClip:=TClipBoard():New()
::oClip:Clear()
::aExcelCols := {}
RETURN( Self )

saludos...

Cesar Cortes Cruz

SysCtrl Software

Mexico



' Sin +- FWH es mejor "
Posts: 1088
Joined: Fri Oct 07, 2005 03:33 PM
Clase TExcelScript de Viktor
Posted: Tue Jun 19, 2007 09:03 PM

Hola,

si, efectivamente con eso se soluciono la creacion de la clase, pero no asi, los metodos save() y saveas(), tienes idea que puede ser.

Gracias

Marcelo

Posts: 298
Joined: Fri Oct 07, 2005 05:20 AM
Clase TExcelScript de Viktor
Posted: Wed Jun 20, 2007 03:04 PM
Si tienen abierta una sesión de Excel el método New() la detecta y la usa , adémas si usan solo Harbour , tienen que hacer algo parecido a esto :
METHOD NEW()  CLASS TExcelScript
   ::lExcel  := .T.
   #IFDEF __XHARBOUR__
      TRY
        ::oExcel := GetActiveObject( "Excel.Application" )
      CATCH
         TRY
            ::oExcel := CreateObject( "Excel.Application" )
         CATCH
            Alert( "No está Excel Instalado en está Pc." )
            ::lExcel  := .F.
         END
      END
   #ELSE
     ::oExcel := TOleAuto():New( Excel.Application )
     IF ::oExcel:hObj == 0
         Alert( "No está Excel Instalado en está Pc." )
        ::lExcel := .F.
      ENDIF

   #ENDIF
   ::oClip:=TClipBoard():New()
*   ::oClip:Clear()
   ::aExcelCols := {}
RETURN( Self )



sysctrl2 wrote:Marcelo yo tuve un problema parecedio ,

hice un cambio en el metodo NEW de la class

aqui un pedazo de codigo


METHOD NEW() CLASS TExcelScript
::lExcel := .T.
#IFDEF __XHARBOUR__
TRY
//::oExcel := TOleAuto():New("Excel.Application") //funciona bien.
// getactiveOb marca error si el archivo esta abierto ..
// ::oExcel := GetActiveObject( "Excel.Application" )
::oExcel := CreateObject( "Excel.Application" ) //este funciona bien
CATCH
TRY
::oExcel := CreateObject( "Excel.Application" ) //no trabaja
CATCH
Alert( "No está Excel Instalado en está Pc." )
::lExcel := .F.
END
END
#ELSE
::oExcel := TOleAuto():New( Excel.Application ) //no trabaja
IF ::hObj == 0
Alert( "No está Excel Instalado en está Pc." )
::lExcel := .F.
ENDIF

#ENDIF
::=TClipBoard():New()
::Clear()
::aExcelCols := {}
RETURN( Self )

saludos...
Vikthor

Continue the discussion