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]