[RESUELTO] Macro para copiar hoja
[RESUELTO] Macro para copiar hoja
Muchas gracias!! He podido conseguir lo que quería con vuestra ayuda
- Adjuntos
-
- Plantilla Necesidades para RETÉN.xls
- (48.8 KiB) Descargado 111 veces
Última edición por frantriso el Lun Mar 07, 2022 6:32 pm, editado 1 vez en total.
Libreoffice version 5.0.1.2.0+
Re: Macro para copiar hoja
Esta macro borra las celdas C6:AG491 de la hoja actual y copia esa hoja, asignando el nombre HojaNueva la hoja nueva.
¿Quiere borrar los datos antes de copiar los datos o después?
¿En cual celda está el nombre de la hoja nueva?
¿Quiere borrar los datos antes de copiar los datos o después?
¿En cual celda está el nombre de la hoja nueva?
Código: Seleccionar todo
oHojaActual = ThisComponent.CurrentController.ActiveSheet
oCeldas = oHojaActual.getCellRangeByName("C6:AG491")
oCeldas.clearContents(16+8+4+2+1) '16=Formula, 8 = anotacion, 4 = texto, 2 = fecha, 1 = valor
oHojas = ThisComponent.Sheets
oHojas.copyByName(oHojaActual.Name, "HojaNueva", oHojas.Count + 1)
Re: Macro para copiar hoja
Buenas noches, los datos que se tienen que borrar son los de la hoja nueva, permaneciendo los de la hoja primera.
El nombre de la hoja debe ser el de la celda A1, que corresponde con el mes.
Muchísimas gracias FJCC por la respuesta y el interés.
El nombre de la hoja debe ser el de la celda A1, que corresponde con el mes.
Muchísimas gracias FJCC por la respuesta y el interés.
Libreoffice version 5.0.1.2.0+
Re: Macro para copiar hoja
Código: Seleccionar todo
oHojaActual = ThisComponent.CurrentController.ActiveSheet
Nombre = oHojaActual.getCellRangeByName("A1").getString()
oHojas = ThisComponent.Sheets
oHojas.copyByName(oHojaActual.Name, Nombre, oHojas.Count + 1)
oHojaNueva = oHojas.getByName(Nombre)
oCeldas = oHojaNueva.getCellrangeByName("C6:AG491")
oCeldas.clearContents(16+8+4+2+1) '16=Formula, 8 = anotacion, 4 = texto, 2 = fecha, 1 = valor
Re: Macro para copiar hoja
Buenas noches, no entiendo muy bien la macro.
Yo he conseguido realizar casi todo lo que me proponía. Sólo me queda cambiar el nombre a la hoja nueva, por el nombre que aparece en la celda A1.
Adjunto el archivo con su macro para que lo veáis y me podáis dar una solución.
Muchas gracias
Yo he conseguido realizar casi todo lo que me proponía. Sólo me queda cambiar el nombre a la hoja nueva, por el nombre que aparece en la celda A1.
Adjunto el archivo con su macro para que lo veáis y me podáis dar una solución.
Muchas gracias
- Adjuntos
-
- Plantilla Necesidades copia.ods
- (27.77 KiB) Descargado 104 veces
Libreoffice version 5.0.1.2.0+
Re: Macro para copiar hoja
El archivo no contiene la macro. Por lo menos, no la veo con OpenOffice. ¿Puede publicar el código en una respuesta aquí?
Re: Macro para copiar hoja
La macro está asignada al "botón" Nueva hoja.
Dice lo siguiente:
REM ***** BASIC *****
sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$1:$AI$37"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(2) as new com.sun.star.beans.PropertyValue
args2(0).Name = "DocName"
args2(0).Value = "Plantilla Necesidades copia"
args2(1).Name = "Index"
args2(1).Value = 32767
args2(2).Name = "Copy"
args2(2).Value = true
dispatcher.executeDispatch(document, ".uno:Move", "", 0, args2())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$C$6:$AG$37"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:DeleteCell", "", 0, Array())
rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Flags"
args5(0).Value = "S"
dispatcher.executeDispatch(document, ".uno:Delete", "", 0, args5())
end sub
Dice lo siguiente:
REM ***** BASIC *****
sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$1:$AI$37"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(2) as new com.sun.star.beans.PropertyValue
args2(0).Name = "DocName"
args2(0).Value = "Plantilla Necesidades copia"
args2(1).Name = "Index"
args2(1).Value = 32767
args2(2).Name = "Copy"
args2(2).Value = true
dispatcher.executeDispatch(document, ".uno:Move", "", 0, args2())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$C$6:$AG$37"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:DeleteCell", "", 0, Array())
rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Flags"
args5(0).Value = "S"
dispatcher.executeDispatch(document, ".uno:Delete", "", 0, args5())
end sub
Libreoffice version 5.0.1.2.0+
Re: Macro para copiar hoja
Marqué el código nuevo con
Código: Seleccionar todo
'FJCC------------
Código: Seleccionar todo
sub Main2
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
'FJCC ----------
oHojaActual = ThisComponent.CurrentController.ActiveSheet
Nombre = oHojaActual.getCellRangeByName("A1").getString()
'---------------
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$1:$AI$37"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(2) as new com.sun.star.beans.PropertyValue
args2(0).Name = "DocName"
args2(0).Value = "Plantilla Necesidades copia"
args2(1).Name = "Index"
args2(1).Value = 32767
args2(2).Name = "Copy"
args2(2).Value = true
dispatcher.executeDispatch(document, ".uno:Move", "", 0, args2())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$C$6:$AG$37"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:DeleteCell", "", 0, Array())
rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Flags"
args5(0).Value = "S"
dispatcher.executeDispatch(document, ".uno:Delete", "", 0, args5())
'FJCC------------
oHojaNueva = ThisComponent.CurrentController.ActiveSheet
oHojaNueva.Name = Nombre
'---------------
end sub