Indice hipervinculado a hojas de un fichero o libro

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
RobertThomson
Mensajes: 1
Registrado: Mié Mar 30, 2016 1:22 pm

Indice hipervinculado a hojas de un fichero o libro

Mensaje por RobertThomson »

Buenos dias,

me gustaria generar de forma automatica un indice a partir de los nombres de las hojas de un fichero Calc.

Supongamos que tenemos 6 hojas; indice, a,b,c,d,e.

En la hoja indice deberia generarse automaticamente una lista a partir de los nombres de las otras hojas, es decir, a, b,c,d,e.

A su vez, cada nombre de la lista deberia estar hipervinculado con la hoja a la que corresponde, de tal forma que si, por ejemplo, hacemos click sobre la letra "c" del indice, se muestre la cuarta hoja ("c").

Muchas gracias por adelantado
OpenOffice 4.1.2 on Windows 7 Entreprise
Avatar de Usuario
SLV-es
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España
Contactar:

Re: Indice hipervinculado a hojas de un fichero o libro

Mensaje por SLV-es »

Sugerencias:
- Crea una macro con la grabadora que inserte en una celda un hiperenlace a la hoja 1 de tu documento

Código: Seleccionar todo

sub InsertarEnlaceAHoja
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(4) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Hyperlink.Text"
args1(0).Value = "#Hoja1"
args1(1).Name = "Hyperlink.URL"
args1(1).Value = "#Hoja1"
args1(2).Name = "Hyperlink.Target"
args1(2).Value = ""
args1(3).Name = "Hyperlink.Name"
args1(3).Value = ""
args1(4).Name = "Hyperlink.Type"
args1(4).Value = 1

dispatcher.executeDispatch(document, ".uno:SetHyperlink", "", 0, args1())


end sub
Modifica la macro para que pueda servir para cualquier nombre de hoja

Código: Seleccionar todo

sub InsertarEnlaceAHoja( cNomHoja as String )
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(4) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Hyperlink.Text"
args1(0).Value = "#" & cNomHoja
args1(1).Name = "Hyperlink.URL"
args1(1).Value = "#" & cNomHoja
args1(2).Name = "Hyperlink.Target"
args1(2).Value = ""
args1(3).Name = "Hyperlink.Name"
args1(3).Value = ""
args1(4).Name = "Hyperlink.Type"
args1(4).Value = 1

dispatcher.executeDispatch(document, ".uno:SetHyperlink", "", 0, args1())

end sub
Ahora utilizando el sistema que encontrarás en este enlace para recorrer las hojas de un libro, y de posicionar el cursor en distintas celdas, genera el bucle para que:
- Se situe en la primera celda
- Lea el nombre de la primera hoja
- Inserte el hiperenlace llamando a la función grabada
- Repita el bucle con la siguiente celda/hoja

Luego seguro que podrás fácilmente asignar la macro a un botón en tu barra de herramientas para invocarla con facilidad

Espero te sirva :)
+info en la web "no oficial" dedicada a OpenOffice en Español
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
Responder