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]

Responder a