Mira, con esto creo ya saber como mover celdas.

¿Como hariamos para simular la combinacion de teclas <Ctrl>+<Flecha
arriba>?
On Thu, Mar 2, 2006, Santiago Bosio <[EMAIL PROTECTED]> dijo:

> Eduardo:
> 
> Aquí te doy una solución alternativa. Que si bien es más compleja y sólo
> convierte a fechas los valores de la columna actual, la pongo a modo de
> ejemplo de las capacidades de los servicios e interfaces de la API UNO.
> 
> Coincido contigo en que el paradigma y la estructura e interrelación de
> los servicios e interfaces es dantesco, y a primera vista causa rechazo
> y algo de frustración, ya que no hay muchos ejemplos disponibles. Pero a
> medida que programas y comprendes el porqué se estructura de esa manera,
> ya no parece tan antinatural, y vas más rápido.
> 
> Estúdialo y modifícalo a voluntad, si de algo te sirve.
> 
> Saludos,
> 
> Santiago
> 
> 
> 
> 
> REM  *****  Inicio del código  *****
> 
> Sub modificarFechas ()
> 
> Dim oDoc As Object
> Dim oHoja As Object
> Dim nCol As Long
> Dim i As Long
> Dim oCelda As Object
> Dim sReemplazo As String
> Dim nReemplazos As Long
> Dim oTextSearch As Object
> Dim oSearchOptions As New com.sun.star.util.SearchOptions
> Dim oSearchResult As Object
> Dim nIdFormato As Long
> Dim oNumberFormatter As Object
> 
> oDoc = ThisComponent
> 
> If Not oDoc.supportsService("com.sun.star.sheet.SpreadsheetDocument") Then
>       MsgBox ("Este documento no es una hoja de cálculo.")
>       Exit Sub
> End If
> 
> ' Creamos el objeto para poder realizar búsquedas dentro del contenido de 
> las celdas
> oTextSearch = createUnoService("com.sun.star.util.TextSearch")
> oSearchOptions.algorithmType = com.sun.star.util.SearchAlgorithms.REGEXP
> oSearchOptions.searchFlag = com.sun.star.util.SearchFlags.REG_EXTENDED + 
> com.sun.star.util.SearchFlags.REG_NOSUB
> oSearchOptions.searchString = "^[:digit:]{2}/[:alpha:]{3}/[:digit:]{4}$"
> oTextSearch.setOptions(oSearchOptions)
> 
> ' Creamos el objeto para poder cambiar el formato numérico de las celdas
> nIdFormato = 
> oDoc.NumberFormats.getStandardFormat(com.sun.star.util.NumberFormat.DATE, 
> oDoc.CharLocale)
> oNumberFormatter = createUnoService("com.sun.star.util.NumberFormatter")
> oNumberFormatter.attachNumberFormatsSupplier(oDoc)
> 
> ' Accedemos a la posición de la celda actual para obtener el número de 
> columna
> oHoja = oDoc.CurrentController.getActiveSheet
> oCelda = oDoc.getCurrentSelection
> nCol = oCelda.getCellAddress.Column
> oCelda = oHoja.getCellByPosition(nCol, 0)
> 
> ' Revisar todas las celdas de la columna hasta encontrar una celda vacía
> While i <= 65535 And oCelda.Type <> com.sun.star.table.CellContentType.EMPTY
>       If oCelda.Type = com.sun.star.table.CellContentType.TEXT Then
>               ' La celda contiene texto
>               oSearchResult = oTextSearch.searchForward(oCelda.String, 0, 
> Len(oCelda.String) - 1)
>               If oSearchResult.subRegExpressions > 0 Then
>                       ' Se encontró la expresión, hay que construir la 
> cadena de reemplazo
>                       sReemplazo = Left(oCelda.String, 3)
>                       Select Case Mid(oCelda.String, 4, 3)
>                               Case "Ene"
>                                       sReemplazo = sReemplazo + "01"
>                               Case "Feb"
>                                       sReemplazo = sReemplazo + "02"
>                               Case "Mar"
>                                       sReemplazo = sReemplazo + "03"
>                               Case "Abr"
>                                       sReemplazo = sReemplazo + "04"
>                               Case "May"
>                                       sReemplazo = sReemplazo + "05"
>                               Case "Jun"
>                                       sReemplazo = sReemplazo + "06"
>                               Case "Jul"
>                                       sReemplazo = sReemplazo + "07"
>                               Case "Ago"
>                                       sReemplazo = sReemplazo + "08"
>                               Case "Set"
>                                       sReemplazo = sReemplazo + "09"
>                               Case "Oct"
>                                       sReemplazo = sReemplazo + "10"
>                               Case "Nov"
>                                       sReemplazo = sReemplazo + "11"
>                               Case "Dic"
>                                       sReemplazo = sReemplazo + "12"
>                       End Select
>                       sReemplazo = sReemplazo + Right(oCelda.String, 5)
> 
>                       ' Cambiar el contenido de la celda
>             oCelda.Value = oNumberFormatter.convertStringToNumber(nIdFormato, 
> sReemplazo)
>                       oCelda.NumberFormat= nIdFormato
>                       nReemplazos = nReemplazos + 1
>               End If
>       End If
> 
>       ' Próxima celda
>       i = i + 1
>       oCelda = oHoja.getCellByPosition(nCol, i)
> Wend
> 
> MsgBox("Se realizaron " + nReemplazos + " reemplazos en la columna actual")
> 
> End Sub
> 
> REM *** Fin del código ***
> 
> 
> 
> 
> 
> El vie, 24-02-2006 a las 20:25, Eduardo Moreno escribió:
>> En un correo anterior comentaba que en Mxico existe una empresa de
>> software llamada Aspel que desarrolla programas de administracin y
>> contabilidad muy famosos por estas tierras.
>> 
>> Dichos programas producen listados en modo de texto, los cuales pueden ser
>> abiertos por OpenOffice.org cuando se les cambia la extensin de .txt a
>> csv
>> 
>> El problema que resuelve este macro es que en el listado que generan los
>> programas las fechas son del tipo 24/Feb/2006 y OpenOffice.org los
>> interpreta como texto, por lo que no se pueden ordenar por fecha las
>> tablas generadas, o aplciar la funcin sumar.si().
>> 
>> El macro transforma los textos correspondientes a los meses de letras a
>> nmeros y se solucionan los problemas.
>>  
>> SUB Hacerfechas
>> ' Este programa esta diseado para cambiar los meses en las fechas que se
>> exportan
>> ' como texto de algunos programas. En Mxico es comn este efecto en los
>> archivos de
>> ' texto generados por los programas de la empresa Aspel(MR).
>> '
>> ' Autor: J. Eduardo Moreno
>> ' Patrocinador: TGC Ingenieria, S.A. de C.V.
>> 
>> ' Declaracin de variables
>>     Dim I As Long                            'Contador que revisa los 
>> arreglos de equivalencias
>>     Dim Doc As Object                        'Objeto donde se almacena el 
>> documento de Calc
>>     DIM Hoja As Object                       'Objeto donde se almacena la 
>> hoja de calculo
>> generada por el archivo de texto
>>     Dim Remplazar As Object          'Objeto donde se almacenan los datos a
>> cambiar y remplazar
>>     Dim Conletra(11) As String       'Arreglo donde se almacenan los meses 
>> con
>> letra
>>     Dim Connumero(11) As String      'Arreglo donde se almacenan los meses 
>> con
>> nmero
>>     
>>     ' Generamos el arreglo con los meses en letra
>>     Conletra() = Array("/Ene/", "/Feb/", "/Mar/", "/Abr/", "/May/",
>> "/Jun/", "/Jul/", "/Ago/",_
>>      "/Sep/", "/Oct/", "/Nov/", "/Dic/")
>>     
>>     'Generamos el arreglo donde se almacenan los meses con nmero
>>     Connumero() = Array("/01/", "/02/", "/03/", "/04/", "/05/", "/06/",
>> "/07/", "/08/", "/09/", "/10/", "/11/", "/12/")
>> 
>>      'Guardamos el documento, la hoja y el objeto de bsqueda en sus
>> respectivas variables
>>     Doc = StarDesktop.CurrentComponent
>>     Hoja = Doc. Sheets (0) 
>>     Remplazar = Hoja.createReplaceDescriptor
>> 
>>      'Recorremos el arreglo para buscar en todo el documento cualquier
>> coincidencia.
>>     For I = 0 To 11
>>         Remplazar.SearchString = Conletra(I)
>>         Remplazar.ReplaceString = Connumero(I)
>>         Hoja.replaceAll(Remplazar)
>>     Next I
>> end sub
>> 
>> E insisto, es ms complicado encontrar informacin para OOo que para MS,
>> pero de que se puede, se puede.
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 

-- 
Eduardo Moreno
TOKONHU de México
044 55 5182 4398


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

Responder a