In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Leer Excel

Foro público de Xailer en español
Responder
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

Leer Excel

Mensaje por Xevi »

Ramón,
Revisa un Sample que he colgado unos post mas abajo...
Mailto del 06/02/2006 de Paco V... dentro del Post, verás un ejemplo de OLE
y MAPI...
Un Saludo,
Xevi.
"Ramón Zea" <zeasoftware@hotmail.com> escribió en el mensaje
news:[email=43f251e1@ozsrvnegro.ozlan.local...]43f251e1@ozsrvnegro.ozlan.local...[/email]
>
> Estoy intentando leer un archivo de excel pero me regresa nil o me marca
> error GPF, que estoy haciendo mal?
>
> TRY
> oExcel := GetActiveObject( "Excel.Application" )
> CATCH
> TRY
> oExcel := CreateObject( "Excel.Application" )
> CATCH
> Alert( "ERROR! Excel not avialable. [" + Ole2TxtError()+ "]" )
> RETURN Nil
> END
> END
>
> oExcel := TOleAuto():New( "Excel.Application" )
>
> oExcel:WorkBooks:Open(Application:cDirectory+"Precios Unitarios
> Tecnico.xls")
>
> oAS := oExcel:ActiveSheet() //oExcel:Get( "ActiveSheet" )
>
> For _nRow_ := 1 to ::oEdit2:value
> For _nColumn_ := 1 to ::oEdit3:value
> ::oEdit1:value := oAS:Cells( _nRow_, _nColumn_ ):Value
>
> Next
> Next
>
>
> Gracias por la ayuda.
>
> Ramón Zea
>
>
Yamil Bracho
Mensajes: 64
Registrado: Mar Jun 28, 2005 2:53 am

Leer Excel

Mensaje por Yamil Bracho »

Ramon quita la llamada a TOleAuto. te queda algo como
TRY
oExcel := GetActiveObject( "Excel.Application" )
CATCH
TRY
oExcel := CreateObject( "Excel.Application" )
CATCH
Alert( "ERROR! Excel not avialable. [" + Ole2TxtError()+ "]" )
RETURN Nil
END
END
oExcel:WorkBooks:Open(Application:cDirectory+"Precios Unitarios
Tecnico.xls")
oAS := oExcel:ActiveSheet() //oExcel:Get( "ActiveSheet" )
For _nRow_ := 1 to ::oEdit2:value
For _nColumn_ := 1 to ::oEdit3:value
::oEdit1:value := oAS:Cells( _nRow_, _nColumn_ ):Value
Next
Next
>
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

Leer Excel

Mensaje por zeasoftware »

gracias yamil.
hay alguna manera de saber los metodos disponibles de un objeto no
docmentado?
me explico, quiero saber que methodos y datos tiene disponible un objeto,
mediante alguna funcion que me extraiga dicha informacion y que pueda
presentarla en alguna parte de la pantalla.
Explicitamente en mi tema de excel, quiero copiar una hoja de un archivo
..xls a otro nuevo.
GRacias
Ramón Zea
Yamil Bracho
Mensajes: 64
Registrado: Mar Jun 28, 2005 2:53 am

Leer Excel

Mensaje por Yamil Bracho »

Ramon, la manera mas facil es hacer la macro en Excel y capturar el codigo
VBA (Visual basic for Application).
y/o consultar la ayuda de Visual Basic for Applications relacionada al
componente de Office como VBA para Word, VBA, para Excel, etc
"Ramón Zea" <zeasoftware@hotmail.com> escribió en el mensaje
news:[email=43f4594b@ozsrvnegro.ozlan.local...]43f4594b@ozsrvnegro.ozlan.local...[/email]
> gracias yamil.
>
> hay alguna manera de saber los metodos disponibles de un objeto no
> docmentado?
>
> me explico, quiero saber que methodos y datos tiene disponible un objeto,
> mediante alguna funcion que me extraiga dicha informacion y que pueda
> presentarla en alguna parte de la pantalla.
>
> Explicitamente en mi tema de excel, quiero copiar una hoja de un archivo
> .xls a otro nuevo.
>
> GRacias
> Ramón Zea
>
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Leer Excel

Mensaje por jfgimenez »

Ramón,
> ya hice eso, lei la pagina donde vienen los comandos, pero, el problema es
> la equivalencia para usarlas en xHarbour y por ende en Xailer.
Traducir un ejemplo de VBA a xHarbour es sencillo. Basta con aplicar un par
de reglas:
- VBA usa el punto (.) para nombrar los miembros de los objetos, mientras
que xHarbour usa los dos puntos (:)
- Los métodos que no aparecen dependientes de algún objeto en VBA, es que
pertenecen al objeto Application de VBA, que en el caso de xHarbour es el
objeto que has instanciado como oExcel.
Este es un ejemplo sacado directamente de la ayuda de VBA para Excel,
concretamente de la propiedad Cells:
For rwIndex = 1 to 4
For colIndex = 1 to 10
With Worksheets("Sheet1").Cells(rwIndex, colIndex)
If .Value < .001 Then .Value = 0
End With
Next colIndex
Next rwIndex
Pues bien, su equivalente en xHarbour es:
FOR rwIndex := 1 TO 4
FOR colIndex := 1 TO 10
WITH OBJECT oExcel:Worksheets( "Sheet1" ):Cells( rwIndex,
colIndex )
IF :Value < .001
:Value := 0
ENDIF
END WITH
NEXT
NEXT
Como ves, es muy muy parecido.
> por eso estoy intentando leer los methodos que contiene la clase tOle o el
> Application.Excel, o a ver si se aparecen los marcianitos poniendo
> letreritos, jejeje, es ironia.
No busques en la clase TOleAuto que no vas a encontrar nada de Excel. Esa
clase es un interface entre xHarbour y OLE, pero es genérica para cualquier
servidor de automatización OLE, pero no tiene nada específico sobre Excel o
cualquier otro servidor.
--
Un saludo,
José F. Giménez
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

Leer Excel

Mensaje por zeasoftware »

ya hice eso, lei la pagina donde vienen los comandos, pero, el problema es
la equivalencia para usarlas en xHarbour y por ende en Xailer.
por eso estoy intentando leer los methodos que contiene la clase tOle o el
Application.Excel, o a ver si se aparecen los marcianitos poniendo
letreritos, jejeje, es ironia.
Mil gracias.
Sigo investigando......
Ramón Zea
Responder