[RESUELTO] cambiar el texto de una o varias celdas

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...

[RESUELTO] cambiar el texto de una o varias celdas

Notapor GADITA39 » Jue Abr 19, 2018 1:21 am

Buenas noches soy muy nuevo en esto de las macros , y quisiera si pudierais ayudarme, necesito crear una macro que cuando pulse un boton, todas las celdas de una hoja que se hayan modificado, vuelvan a la posición inicial , por ejemplo, el archivo que dejo aqui, la celda d8 tiene un desplegable con varios numeros y la palabra NADA, pues necesito que cuando se modifique el desplegable, pulsando el boton se vuelva a la posicion de NADA. Muchas gracias de antemano y espero sus ayudas.

nota: Estoy trabajando con libreOffice Versión: 5.4.3.2 y MAC.
Adjuntos
pueba.ods
(7.86 KiB) 33 veces
Última edición por GADITA39 el Dom Abr 22, 2018 1:17 am, editado 1 vez en total
LibreOffice Versi??n: 5.4.3.2, trabajo com Mac High Sierra versi??n 10.13.4 y Windows 7
GADITA39
 
Mensajes: 4
Registrado: Jue Abr 19, 2018 12:38 am

Re: cambiar el texto de una o varias celdas

Notapor PepeOooSevilla » Jue Abr 19, 2018 7:53 am

Hola.
    1º. Te damos la bienvenida al Foro y, si aún no has leído la Guía de supervivencia, por favor, no dejes de hacerlo.
    2º. Las funciones y procedimientos siguientes los he copiado de la página: Macros para Apache OpenOffice Calc de nuestro compañero SLV-es. Obviamente he modificado los rangos "A1:A10" y "D8".

    Código: Seleccionar todo   Expandir vistaContraer vista
    REM  *****  BASIC  *****
    Option Explicit

    ' Funciones y procedimientos de la página:
    ' http://wiki.open-office.es/Macros_en_Basic_para_OpenOffice_Calc#Borrar_contenido_de_celdas
    ' http://wiki.open-office.es/Portada
    ' http://wiki.open-office.es/Macros_en_Basic_para_OpenOffice_Calc

    Sub Main
       Dim oLibro As Object, oHoja As Object
       
       oLibro = Libro()
       oHoja = HojaActiva(oLibro)
       'Se borran SÓLO los valores, fechas y texto del rango de celdas A1:A10
       CeldaBorra(oHoja, "A1:A10", "v,fh,t")
       'Se mantiene el resto de información excepto D8 que vuelve a ser "NADA"
       oHoja.GetCellRangeByName("D8").setString("NADA")
    End Sub

    Function Libro() As Object
       Libro = ThisComponent
    End Function

    Function HojaActiva(oLibro As Object) As Object
       HojaActiva = oLibro.GetCurrentController.GetActiveSheet
    End Function

    Function Rango( oHoja As Object, cRango As String ) As Object
       Rango = oHoja.GetCellRangeByName( cRango )
    End Function

    Sub CeldaBorra(oHoja As Object, cRango As String, Optional cFlags As String)
    ' Se vacía/borra el contenido de la celda; no se elimina la celda
       Dim oRango As Object, aFlags() As String, nFlags As Long, n As Integer, f As String
       oRango = Rango(oHoja, cRango)
       If IsMissing(cFlags) Then cFlags = ""
       if cFlags = "" Then cFlags = "v,fh,t,c,f,fc,e,o,at,fe" ' todo / all
       aFlags() = Split(cFlags, ",")
       For Each f In aFlags
          Select Case LCase(f)
             Case "v", "valor", "value", "n", "número", "numero"
                nFlags = nFlags + com.sun.star.sheet.CellFlags.VALUE
             Case "fh", "fechahora", "dt", "datetime"
                nFlags = nFlags + com.sun.star.sheet.CellFlags.DATETIME
             Case "t", "texto", "s", "string"
                nFlags = nFlags + com.sun.star.sheet.CellFlags.STRING
             Case "c", "comentario", "a", "annotation"
                nFlags = nFlags + com.sun.star.sheet.CellFlags.ANNOTATION
             Case "f", "fórmula", "formula"
                nFlags = nFlags + com.sun.star.sheet.CellFlags.FORMULA
             Case "fc", "formato", "formato celda", "formateo", "ce", "cell formatting", "hardattr"
                nFlags = nFlags + com.sun.star.sheet.CellFlags.HARDATTR
             Case "e", "estilo", "s", "style"
                nFlags = nFlags + com.sun.star.sheet.CellFlags.STYLES
             Case "o", "objeto", "object"
                nFlags = nFlags + com.sun.star.sheet.CellFlags.OBJECTS
             Case "at", "atributos", "ea", "edit attributes", "editattr"
                nFlags = nFlags + com.sun.star.sheet.CellFlags.EDITATTR
             Case "fe", "formato edición", "formato edicion", "ef", "edition formatting", "formatted"
                nFlags = nFlags + com.sun.star.sheet.CellFlags.FORMATTED
          End Select
       Next
       oRango.clearContents(nFlags)
    End Sub
    3º. Si tienes curiosidad e interés en la programación de macros para OpenOffice/LibreOffice tienes que leer el libro Aprendiendo OOo Basic de nuestro compañero mauricio. También en las páginas Manuales de Apache OpenOffice en español: Basic y, Basic OpenOffice: Apache OpenOffice Basic en español de nuestro compañero SLV-es, encontrarás muy buena información.

    Si en lugar del lenguaje BASIC quieres empezar con PYTHON (mauricio te lo recomendará seguro) entonces deberías visitar:
    4º. Por último, si consideras que el tema está resuelto, bien por las respuestas dadas o bien por que has descubierto tú la solución (en este caso deberías compartirla con la comunidad) debes indicarlo (¿Cómo marcar como RESUELTO un tema?).

Saludos cordiales.
Adjuntos
pueba_GADITA39_v2.ods
LibreOffice Calc
(13.31 KiB) 40 veces
LibreOffice 6.0.7 (estable) en Windows 7 / 10
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Avatar de Usuario
PepeOooSevilla
 
Mensajes: 924
Registrado: Sab Abr 04, 2009 6:10 pm
Ubicación: Sevilla (España)

Re: cambiar el texto de una o varias celdas

Notapor GADITA39 » Sab Abr 21, 2018 5:22 pm

Muchas gracias por tu rapidez y tu tiempo PepeOooSevilla, pero cuando intento hacer correr la rutina, no me aplica ningún cambio, no se si será es sistema operativo, o el libre office, pero no hace nada. De todos modos muchísimas gracias.
LibreOffice Versi??n: 5.4.3.2, trabajo com Mac High Sierra versi??n 10.13.4 y Windows 7
GADITA39
 
Mensajes: 4
Registrado: Jue Abr 19, 2018 12:38 am

Re: cambiar el texto de una o varias celdas

Notapor mauricio » Sab Abr 21, 2018 5:52 pm

sin acritud... ¿te das cuenta que decir "solo" que no funciona, no ayuda a ayudarte?...

Si "detallas" como has intentado, pero realmente detallado, ayudará a quien quiera ayudarte.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
AOO 4.1 | LibO 5.4 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5645
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: México, D.F.

Re: cambiar el texto de una o varias celdas

Notapor GADITA39 » Sab Abr 21, 2018 8:30 pm

Perdón, no era mi intención, lo siento si he ofendido a alguien, pero no se como explicar , que el archivo que me envío el compañero, una vez que lo ejecute en mi ordenador, no hizo lo que decía que iba ha hacer, ósea limpiar el rango de a1 a a10 y la celda d8. y sinceramente no se que debe haber pasado, pero no "me funciona".
gracias por ayudarme.
LibreOffice Versi??n: 5.4.3.2, trabajo com Mac High Sierra versi??n 10.13.4 y Windows 7
GADITA39
 
Mensajes: 4
Registrado: Jue Abr 19, 2018 12:38 am

Re: cambiar el texto de una o varias celdas

Notapor mauricio » Sab Abr 21, 2018 10:32 pm

no, para nada, nadie esta ofendido... pero estamos en lo mismo, no sabemos que "haces exactamente" al abrir el archivo... por mi parte, he tenido que hacer tres cosas:

1.- Al abrir me dice que tiene macros, hay que activar las mismas.
2.- Como lo abre en solo lectura hay que permitir editar los datos.
3.- El botón que esta en la hoja, forma parte del formulario de la misma hoja, el mismo estaba en modo diseño, por lo que al darle click se selecciona en vez de ejecutarse. Al pasar el formulario a modo ejecución, y al dar click en el mismo, hace lo que haz solicitado.

A esto me refiero cuando preguntamos, que "haces exactamente al abrir el archivo"?

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
AOO 4.1 | LibO 5.4 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5645
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: México, D.F.

Re: cambiar el texto de una o varias celdas

Notapor GADITA39 » Dom Abr 22, 2018 1:11 am

Muchísimas gracias, compañero, ya pude hacerla funcionar, cambié las opciones de seguridad del LibreOffice,con respecto a las macros y todo ha ido bien , muchas gracias por todo a usted mauricio y PepeOooSevilla .Espero poder ayudar dentro de poco a algún compañero.
LibreOffice Versi??n: 5.4.3.2, trabajo com Mac High Sierra versi??n 10.13.4 y Windows 7
GADITA39
 
Mensajes: 4
Registrado: Jue Abr 19, 2018 12:38 am

Re: [RESUELTO] cambiar el texto de una o varias celdas

Notapor mauricio » Dom Abr 22, 2018 5:09 am

Que bueno que ya funciono.

Para los que nos gusta más Python y usamos EasyMacro, aquí la versión:
Código: Seleccionar todo   Expandir vistaContraer vista
from libo import LIBO

def main():
    app = LIBO()
    hoja = app.doc.active
    hoja['A1:A10'].clear()
    hoja['D8'].value = 'NADA'
    return
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
AOO 4.1 | LibO 5.4 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5645
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: México, D.F.


Volver a Macros y API UNO

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 invitados