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
CLASE OLE PARA 16 Y 32 BITS
- Manuel Valdenebro
- Posts: 706
- Joined: Thu Oct 06, 2005 9:57 pm
- Location: Málaga-España
que sirva
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
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):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
==========================
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.
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
http://vikthor.com.mx/fivewin
en la seccion enlaces y busquen la liga a la página de José Giménez
Vikthor
Re: que sirva
gracias aunque interesante si me dijeras que hace la funcion traza()
FiveWiDi wrote: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):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
==========================
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.