[RESUELTO]Una Macro para borrar celdas en varias Hojas

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
pedrito76
Mensajes: 78
Registrado: Jue Jul 08, 2010 3:02 pm

[RESUELTO]Una Macro para borrar celdas en varias Hojas

Mensaje por pedrito76 »

Hola a todos,

Llevo mucho tiempo intentando que una macro me funcione para borrar el contenido de varias celdas en varias hojas a la vez y no consigo hacerlo, por favor me podriaís indicar como?. Solo consigo que me borre las de la hojaActiva :crazy: :knock: :ucrazy:

Gracias.

Saludos,
Pedro
Última edición por pedrito76 el Vie Jul 09, 2010 7:38 pm, editado 1 vez en total.
OpenOffice.org 3.2
Avatar de Usuario
mauricio
Mensajes: 6093
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Una Macro para borrar celdas en varias Hojas

Mensaje por mauricio »

Hola...

Tienes que hacer referencia correctamente a cada rango en cada hoja, te muestro dos formas de hacerlo:

Código: Seleccionar todo

Option Explicit

Sub BorrarCeldas1()
Dim oDoc As Object
Dim oRango1 As Object
Dim oRango2 As Object
Dim oRango3 As Object

	'Este documento
	oDoc = ThisComponent
	'Hoja por indice rango por nombre
	oRango1 = oDoc.getSheets.getByIndex(0).getCellRangeByName("A1:B5")
	'Hoja por nombre rango por nombre
	oRango2 = oDoc.getSheets.getByName("Hoja2").getCellRangeByName("C5:D10")
	'Hoja por indice rango por posicion
	oRango3 = oDoc.getSheets.getByIndex(2).getCellRangeByPosition(1,1,4,4)

	'Borramos todos los datos en cada rango
	oRango1.clearContents(1023)
	oRango2.clearContents(1023)
	oRango3.clearContents(1023)

End Sub


'Aquí usamos un contender de rangos
Sub BorrarCeldas2()
Dim oDoc As Object
Dim oRangos As Object
Dim oDirRango As Object

	'Este documento
	oDoc = ThisComponent
	'Contenedor de rangos
	oRangos = oDoc.createInstance("com.sun.star.sheet.SheetCellRanges")
	'Direccion de un rango
	oDirRango = CreateUnoStruct( "com.sun.star.table.CellRangeAddress" )
	
    'La direccion de un rango en la primer hoja
    oDirRango = oDoc.getSheets.getByIndex(0).getCellRangeByName("A1:B5").getRangeAddress()
    'Lo agregamos al contender de rangos
	oRangos.addRangeAddress( oDirRango, False )

	'Aqui usamos la estructura directamente
    With oDirRango
    	.Sheet = 1
        .StartColumn = 0
        .StartRow = 0
        .EndColumn = 1
        .EndRow = 4
	End With
	'Lo agregamos al contender de rangos
	oRangos.addRangeAddress( oDirRango, False )
	
    'La direccion de un rango en la tercer hoja
    oDirRango = oDoc.getSheets.getByIndex(2).getCellRangeByName("A1:B5").getRangeAddress()
    'Lo agregamos al contender de rangos
	oRangos.addRangeAddress( oDirRango, False )
	
	'Borramos todos el contenido de todos los rangos
	oRangos.clearContents(1023)
	
End Sub
Todo este código lo he tomado de mi libro, donde puedes resolver cualquier duda respecto a tu pregunta y otras muchas más: http://www.universolibre.org/node/7

Por favor, si esto responde tu pregunta, edita el primer mensaje de este hilo y agrega al principio del título la etiqueta [RESUELTO], de esta forma conseguiremos un foro más ordenado.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
pedrito76
Mensajes: 78
Registrado: Jue Jul 08, 2010 3:02 pm

Re: Una Macro para borrar celdas en varias Hojas

Mensaje por pedrito76 »

Mauricio eres un Crack... Genial!!! :bravo: :bravo: :bravo:

Pero, tengo otro problema que no supe resolver. Bueno tengo un pequeño negocio y ya sabes que difícil es empezar y ahora me ocupa mucho tiempo el programar cosas que me sean útiles, y las macros me ayudarán muchísimo, no se sí sería mejor enviarte el fichero que tengo de hoja de calc. resulta que es un fichero para hacer caja cada semana y cada hoja es una semana, lo que me gustaría hacer es que cuando acaba el mes pudiera con un botón el borrar todo el contenido de las celdas, que Gracias a ti ya lo he conseguido pero que a su vez cambiara al mes siguiente.... no se si me he explicado bien.


De nuevo muchas Gracias :D
OpenOffice.org 3.2
pedrito76
Mensajes: 78
Registrado: Jue Jul 08, 2010 3:02 pm

Re: Una Macro para borrar celdas en varias Hojas

Mensaje por pedrito76 »

mauricio,

otra pregunta, ya he conseguido creo hacer lo que quería, pero....? ahora mi pregunta es como hacer que varias macros osea varios modulos mejor dicho funcionen a la vez, clikando un botón, dentro de una hoja :crazy:

Gracias
OpenOffice.org 3.2
Avatar de Usuario
mauricio
Mensajes: 6093
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Una Macro para borrar celdas en varias Hojas

Mensaje por mauricio »

Hola...

Primero, si no lo has hecho, por favor, lee la Guía de supervivencia
Segundo, una pregunta por tema, de este modo tenemos foros más ordenados.
Tercero, no hagas las preguntas dirigidas a mi, cualquier del foro con más experiencia puede responderte.
Cuarto, tu pregunta la puedes resolver en mi libro: http://www.universolibre.org/node/7
Quinto, la pregunta por el que abriste este tema esta resuelta, por favor, edita el primer mensaje de este hilo y agrega al principio del título la etiqueta [RESUELTO], de esta forma conseguiremos un foro más ordenado.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
pedrito76
Mensajes: 78
Registrado: Jue Jul 08, 2010 3:02 pm

Re: Una Macro para borrar celdas en varias Hojas

Mensaje por pedrito76 »

Perdon...

Abriré un tema nuevo, no encuentro mi duda en tu libro y mira que lo leo.... :(

Gracias a todos :D
OpenOffice.org 3.2
Responder