[RESUELTO] cambiar el texto de una o varias celdas

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
GADITA39
Mensajes: 4
Registrado: Jue Abr 19, 2018 12:38 am

[RESUELTO] cambiar el texto de una o varias celdas

Mensaje por GADITA39 »

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) Descargado 200 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
Avatar de Usuario
PepeOooSevilla
Mensajes: 1480
Registrado: Sab Abr 04, 2009 6:10 pm
Ubicación: Sevilla (España)

Re: cambiar el texto de una o varias celdas

Mensaje por PepeOooSevilla »

Hola.
  1. 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.
  1. 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

    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
    
  1. 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:
  1. 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) Descargado 209 veces
LibreOffice 6.4.6. Windows 10. Java 8 rev. 261 (64 bits)
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
GADITA39
Mensajes: 4
Registrado: Jue Abr 19, 2018 12:38 am

Re: cambiar el texto de una o varias celdas

Mensaje por GADITA39 »

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
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: cambiar el texto de una o varias celdas

Mensaje por mauricio »

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
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
GADITA39
Mensajes: 4
Registrado: Jue Abr 19, 2018 12:38 am

Re: cambiar el texto de una o varias celdas

Mensaje por GADITA39 »

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
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: cambiar el texto de una o varias celdas

Mensaje por mauricio »

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
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
GADITA39
Mensajes: 4
Registrado: Jue Abr 19, 2018 12:38 am

Re: cambiar el texto de una o varias celdas

Mensaje por GADITA39 »

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
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

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

Mensaje por mauricio »

Que bueno que ya funciono.

Para los que nos gusta más Python y usamos EasyMacro, aquí la versión:

Código: Seleccionar todo

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
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Responder