El día 22/05/07, Alexandro Colorado <[EMAIL PROTECTED]> escribió:

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

Es verdad, aunque long no produce problemas, lo ideal es que fuese Integer.
Saludos.
Alfredo.

Responder a