Eduardo:
No entendí bien a qué te refieres con simular la combinación de teclas.
Si lo que tú quieres es que al presionar <Ctrl>+<Flecha arriba> Calc
desplace las celdas seleccionadas hacia arriba, entonces reasigna la
combinación de teclas a través de preferencias a la macro que hayas
creado para desplazar celdas.
¿O tú te refieres precisamente a cómo debiera ser la macro? Si es así,
necesitaría saber otras cosas, como si al desplazar los valores de las
celdas de destino se reemplazan, o no.
Saludos,
Santiago.
El jue, 02-03-2006 a las 22:25, Eduardo Moreno escribió:
> 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]
> >
> >
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]