Quoting "Alfredo Mtz R." <[EMAIL PROTECTED]>:

El día 19/05/07, Ariel Constenla-Haile <[EMAIL PROTECTED]>
escribió:

Hola Alfredo,


Alfredo Mtz R. escribió:
Que tal lista

He hecho un macro que busca en una columna de una hoja de Calc cierto
string
y funciona muy bien; es mas o menos así:

oDescBusca = oHojaBase.createSearchDescriptor()
oDescBusca.SearchWords = True
oDescBusca.setSearchString (aControl)
oResultado = oHojaBase.findFirst(oDescBusca)

Mi problema es que también necesito localizar  el renglón en que se
encuentra oResultado(la celda que contiene la cadena que busco) ya que
en
esa misma fila se encuentran datos que quiero leer. Así que ¿Como hago
que
me devuelva un Integer del numero de renglón?

Les agradezco cualquier ayuda.


en mi página he puesto un ejemplo:
http://www.arielconstenlahaile.com.ar/ooo/calc.php

http://www.arielconstenlahaile.com.ar/ooo/docs/ARIEL_OOoBASIC_BUSCAR_REEMPLAZAR.ods

debes adaptarlo según el modo que realices la búsqueda.
Hay dos funciones para obtener el nombre GUI de la celda a partir de la
struct com.sun.star.table.CellAddress

En la semana veré si puedo agregarle más cosas (como buscar sólo
funciones, etc.)

Saludos,
Ariel.



Gracias Ariel, he visto tu codigo de "ARIEL_OOoBASIC_BUSCAR_REEMPLAZAR.ods"
y me ha sido de gran ayuda.
Ahora he escrito la siguiente función.

Function UbicaRenglon(NomHoja As String, Cadena As String, Columna As
String) As Long
Dim oHojaBase As Object
Dim oSearchDescriptor
 oHojaBase = ThisComponent.Sheets.getByName(NomHoja)
 oSearchDescriptor = oHojaBase.createSearchDescriptor()
' aControl = oDlg.Model.TextField1.Text
   With oSearchDescriptor
           .setSearchString(Cadena)
           '.getSearchString(Cadena)
           .SearchCaseSensitive = True
           .SearchWords = False
           'TRUE= sólo celdas que contengan esa cadena y NADA MÁS.
           'FALSE= celdas que contengan la cadena como SUBCADENA.
       End With

   Dim oResultados, iCantResultados, sCadenaRangeAddresses$
   oResultados = oHojaBase.findAll(oSearchDescriptor)
   'iCantResultados = oResultados.Count
   if     IsNull(oResultados) then
   UbicaRenglon = 0
   else
   sCadenaRangeAddresses = oResultados.RangeAddressesAsString
   Renglon = Right(oResultados.RangeAddressesAsString, Len(
oResultados.RangeAddressesAsString) - 1 - InStr(
oResultados.RangeAddressesAsString, "." & Columna))
   UbicaRenglon = val(Renglon)
   end if
End Function


Esta función devuelve el renglón en donde se encuentra la "Cadena" que
buscamos en la hoja "NomHoja", podemos especificar de que "Columna" queremos
el resultado.

El único problema es que esta función no puede reconocer el texto de una
celda que es resultado de una formula; es decir si en la celda A1 hay
=Texto(20070419), la función no reconoce como texto a 20070419 y no lo
encuentra.

¿Saben como hacer que si pueda reconocerlo?

De nuevo gracias.
Alfredo.

No deberia ser integro ya que es un valor numerico?
Lo importante seria revisar la documentacion de referencia tal como el tipo de valores en xCell.
http://api.openoffice.org/docs/common/ref/com/sun/star/sheet/SheetCell.html

http://api.openoffice.org/docs/DevelopersGuide/Spreadsheet/Spreadsheet.xhtml#1_3_1_5_Cells


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Responder a