Haz tu Pregunta
0

Duplicar hojas y renombrarlas con Macros

preguntado 2018-05-07 22:26:27 +0200

Imagen Gravatar de matias romera

updated 2018-06-01 00:39:11 +0200

Buenos días,

Tengo lo siguiente: Hoja1: Numero Nombre ; 1 Pepe ; 2 Juan ; 3 Carlos (una tabla de 2 columnas -A Numero y B Nombre- con 4 filas -primer fila numero y nombre y las siguientes 3 el numero con su nombre) Hoja2: Numero: X Nombre: buscarv (en esa hoja yo en numero inserto un valor del 1 al 3 y me figura el nombre en la casilla de al lado)

Es una simplificación de mi problema, pero yo quisiera hacer un acceso de teclado (o botón, lo que sea mas comodo) que: *en Hoja2 inserte el primer número de la tabla en Hoja1 (actualizandose la hoja con el nombre por buscarv) *haga una copia de la hoja en otra pestaña *la renombre con el nombre correspondiente al que figure en la hoja (por ejemplo Pepe) *y repita el proceso hasta que finalice con la tabla

Realmente no sé ni por donde arrancar,

Gracias

edito: con la grabadora de macros hice la prueba y obtuve esto:

sub copiarHoja
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 = "$B$3"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
 rem ----------------------------------------------------------------------
dim args3(2) as new com.sun.star.beans.PropertyValue
args3(0).Name = "DocName"
args3(0).Value = "Sin título1"
args3(1).Name = "Index"
args3(1).Value = 32767
args3(2).Name = "Copy"
args3(2).Value = true
dispatcher.executeDispatch(document, ".uno:Move", "", 0, args3())
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Name"
args4(0).Value = "pepe"
dispatcher.executeDispatch(document, ".uno:RenameTable", "", 0, args4())
rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Nr"
args5(0).Value = 2
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args5())
rem ----------------------------------------------------------------------
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "ToPoint"
args6(0).Value = "$A$3"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args6())
rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "StringName"
args7(0).Value = "2"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args7())
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())
rem ----------------------------------------------------------------------
dim args9(0) as new com.sun.star.beans.PropertyValue
args9(0).Name = "ToPoint"
args9(0).Value = "$B$3"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args9())
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args11(2) as new com.sun.star.beans.PropertyValue
args11(0).Name = "DocName"
args11(0).Value = "Sin título1"
args11(1).Name = "Index"
args11(1).Value = 32767
args11(2).Name = "Copy"
args11(2).Value = true
dispatcher.executeDispatch(document, ".uno:Move", "", 0, args11())
rem ----------------------------------------------------------------------
dim args12(0) as new com.sun.star.beans.PropertyValue
args12(0).Name = "Name"
args12(0).Value = "juan"
dispatcher.executeDispatch(document, ".uno:RenameTable", "", 0, args12())
rem ----------------------------------------------------------------------
dim args13(0) as new com.sun.star.beans.PropertyValue ...
(mas)
edit re-etiquetar marcar como ofensivo cerrar fusionar delete

1 Responder

Ordenar por » viejos nuevas más votado
0

respondido 2018-06-02 23:47:22 +0200

Imagen Gravatar de Denis J Navas

Una idea. "Datos tabla" genera cuadros agrupados por etiquetas o códigos del campo que elegiste para las filas. Si has generado la tabla activando la opción "Activar análisis detallado", para que almacene los datos con los que ha generado la tabla y si haces doble click en una celda, LibreOffice genera automáticamente una nueva hoja con los datos que sustentan a esa celda.

Haz la prueba manualmente con un archivo csv o búscalo en la web. Una vez que te funcio, trata de generar una macro qeu recorra las celdas seleccionadas dentro de la tabla dinámica. Otra alternativa, es que flexibilices el código que grabas y lo ejecutes con una orden de teclado (Ctrl+Tecla).

Si lo que quieres es algo completamente automatizado, es mejor que pienses en bases de datos.

Te aclaro. No soy programador de macros. En mi caso lo haría por el método que te di en el primer párrafo.

edit marcar como ofensivo delete enlace mas
Ingresa/Regístrate para Contestar

Herramientas de Preguntas

2 seguidores

Estadisticas

Preguntado: 2018-05-07 22:26:27 +0200

Visto: 62 veces

Ultima actualización: Jun 02 '18