[RESUELTO] cambiar el texto de una o varias celdas
[RESUELTO] cambiar el texto de una o varias celdas
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.
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
- 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
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
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?).
- 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.
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.
Re: cambiar el texto de una o varias celdas
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
Re: cambiar el texto de una o varias celdas
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
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
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: cambiar el texto de una o varias celdas
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.
gracias por ayudarme.
LibreOffice Versi??n: 5.4.3.2, trabajo com Mac High Sierra versi??n 10.13.4 y Windows 7
Re: cambiar el texto de una o varias celdas
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
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
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: cambiar el texto de una o varias celdas
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
Re: [RESUELTO] cambiar el texto de una o varias celdas
Que bueno que ya funciono.
Para los que nos gusta más Python y usamos EasyMacro, aquí la versión:
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
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro