Page 1 of 1

CLASE OLE PARA 16 Y 32 BITS

Posted: Thu Jul 13, 2006 3:07 pm
by QAZWSX2K
SALUDOS POR FAVOR SI ALGUIEN TIENE LA CLASE OLE, TOLEAUTO ACTUALIZADA Y ME LA PODRIA MANDAR SE LO AGRADECERIA MUCHO, GRACIAS, TENGO ES UNA VERSION DEL 2001 QUE ME DA ERROR AL TRATAR DE PASAR DE EXCEL A DBF

GRACIAS COMPAÑEROS

Posted: Thu Jul 13, 2006 3:18 pm
by Manuel Valdenebro
One question / una cuestión:

¿ Clipper / Habour .or. xHarbour ?

que sirva

Posted: Thu Jul 13, 2006 5:30 pm
by QAZWSX2K
saludos preferiblemente de harbour pero me conformo con alguna que sirva ya que no leen desde excel, da error de property no se que cosa en GETproperty workbooks o algo asi, me tiene verde, tengo mas de 2 meses en este detalle, gracias

Re: que sirva

Posted: Fri Jul 14, 2006 10:52 am
by FiveWiDi
QAZWSX2K wrote:saludos preferiblemente de harbour pero me conformo con alguna que sirva ya que no leen desde excel, da error de property no se que cosa en GETproperty workbooks o algo asi, me tiene verde, tengo mas de 2 meses en este detalle, gracias
En Harbour y sin librerías adicionales, yo lo hago así (ahora me doy cuenta de que no estoy eliminando al final oExcel ni oHoja):

==========================
oExcel := CreateOLEObject("Excel.Application")
OLESetProperty(oExcel,"Visible", .T.)
OLEInvoke( OLEGetProperty(oExcel,"Workbooks"), "Open", cPathxls )
oHoja := OLEGetProperty(oExcel,"ActiveSheet")

ccognoms := "zzz"
nRow := 1

While AllTrim( ccognoms ) <> ""

nRow ++

Msgnowait( AMPAarra, "Atención!" , "Leyendo e importando datos." + ;
" Espere unos momentos por favor...." )

cCCC := OleGetProperty( OleGetProperty( oHoja, "Cells", nRow, 2 ), "Value" )
If Valtype( cCCC) = "U"
cCCC := "00000000000000000000"
EndIf
cccc := Upper( cccc )
Traza(1, "cccc=", cccc )

cmail := OleGetProperty( OleGetProperty( oHoja, "Cells", nRow, 3 ), "Value" )
If Valtype( cmail) = "U"
cmail := Space(1)
EndIf
cmail := Upper( cmail )
Traza(1, "cmail=", cmail )

cdatanaix := OleGetProperty( OleGetProperty( oHoja, "Cells", nRow, 4 ), "Value" )
If Valtype( cdatanaix) = "U"
cdatanaix := CToD("01/01/1900")
elseIf Valtype( cdatanaix) = "C"
cdatanaix := CToD(cdatanaix)
EndIf
Traza(1, "cdatanaix=", cdatanaix)

cCognoms := OleGetProperty( OleGetProperty( oHoja, "Cells", nRow, 7 ), "Value" )
If Valtype( ccognoms) = "U"
ccognoms := space(1)
EndIf
cCognoms := Upper( ccognoms )
Traza(1, "ccognoms=", ccognoms )

cNom := OleGetProperty( OleGetProperty( oHoja, "Cells", nRow, 8 ), "Value" )
If Valtype( cnom) = "U"
cnom := space(1)
EndIf
cNOM := Upper( cNOM )
Traza(1, "cnom=", cNOM )

cLOPD := OleGetProperty( OleGetProperty( oHoja, "Cells", nRow, 10 ), "Value" )
If Valtype( clopd) = "U"
clopd := .F.
Else
clopd := .T.
EndIf
Traza(1, "clopd=", cLOPD )

OLEInvoke( oExcel, "Quit" )
==========================

Es lento pero funciona.

Saludos
Carlos G.

Posted: Sun Jul 16, 2006 1:44 am
by Vikthor
Les recomiendo que se den una vuelta por :

http://vikthor.com.mx/fivewin

en la seccion enlaces y busquen la liga a la página de José Giménez

Re: que sirva

Posted: Mon Jul 17, 2006 1:17 pm
by QAZWSX2K
gracias aunque interesante si me dijeras que hace la funcion traza()

FiveWiDi wrote:
QAZWSX2K wrote:saludos preferiblemente de harbour pero me conformo con alguna que sirva ya que no leen desde excel, da error de property no se que cosa en GETproperty workbooks o algo asi, me tiene verde, tengo mas de 2 meses en este detalle, gracias
En Harbour y sin librerías adicionales, yo lo hago así (ahora me doy cuenta de que no estoy eliminando al final oExcel ni oHoja):

==========================
oExcel := CreateOLEObject("Excel.Application")
OLESetProperty(oExcel,"Visible", .T.)
OLEInvoke( OLEGetProperty(oExcel,"Workbooks"), "Open", cPathxls )
oHoja := OLEGetProperty(oExcel,"ActiveSheet")

ccognoms := "zzz"
nRow := 1

While AllTrim( ccognoms ) <> ""

nRow ++

Msgnowait( AMPAarra, "Atención!" , "Leyendo e importando datos." + ;
" Espere unos momentos por favor...." )

cCCC := OleGetProperty( OleGetProperty( oHoja, "Cells", nRow, 2 ), "Value" )
If Valtype( cCCC) = "U"
cCCC := "00000000000000000000"
EndIf
cccc := Upper( cccc )
Traza(1, "cccc=", cccc )

cmail := OleGetProperty( OleGetProperty( oHoja, "Cells", nRow, 3 ), "Value" )
If Valtype( cmail) = "U"
cmail := Space(1)
EndIf
cmail := Upper( cmail )
Traza(1, "cmail=", cmail )

cdatanaix := OleGetProperty( OleGetProperty( oHoja, "Cells", nRow, 4 ), "Value" )
If Valtype( cdatanaix) = "U"
cdatanaix := CToD("01/01/1900")
elseIf Valtype( cdatanaix) = "C"
cdatanaix := CToD(cdatanaix)
EndIf
Traza(1, "cdatanaix=", cdatanaix)

cCognoms := OleGetProperty( OleGetProperty( oHoja, "Cells", nRow, 7 ), "Value" )
If Valtype( ccognoms) = "U"
ccognoms := space(1)
EndIf
cCognoms := Upper( ccognoms )
Traza(1, "ccognoms=", ccognoms )

cNom := OleGetProperty( OleGetProperty( oHoja, "Cells", nRow, 8 ), "Value" )
If Valtype( cnom) = "U"
cnom := space(1)
EndIf
cNOM := Upper( cNOM )
Traza(1, "cnom=", cNOM )

cLOPD := OleGetProperty( OleGetProperty( oHoja, "Cells", nRow, 10 ), "Value" )
If Valtype( clopd) = "U"
clopd := .F.
Else
clopd := .T.
EndIf
Traza(1, "clopd=", cLOPD )

OLEInvoke( oExcel, "Quit" )
==========================

Es lento pero funciona.

Saludos
Carlos G.