Mostrar hojas mediante macros
Sub MstH1Macro
dim document as objectdim dispatcher as objectdocument = ThisComponent.CurrentController.Framedispatcher = createUnoService("com.sun.star.frame.DispatchHelper")dim args1(0) as new com.sun.star.beans.PropertyValueargs1(0).Name = "aTableName"args1(0).Value = "Hoja2"dispatcher.executeDispatch(document, ".uno:Show", "", 0, args1())
End Sub
Además de lo que tú ya conoces por ser parte invariable del código macro, el que resulta determinante de esta funcionalidad está comprendido entre las líneas 5 a 8.
Fíjate que args1(0).Name trabaja con el nombre de la tabla ("aTableName"), por lo que args1(0).Value requiere un dato alfanumérico que se ajuste al nombre de una hoja realmente existente en estado "Oculto" (en este caso "Hoja2") (1).
La instrucción concreta que muestra la hoja es ".uno:Show" y es el segundo parámetro de la función o método dispatcher.executeDispatch().
Conocido esto resulta muy sencillo transformar la macro en una subrutina: es suficiente con dotarla de un parámetro string que permita recibir el nombre de la hoja desde el script desde el cual es llamada la subrutina. Vemos un ejemplo:
Sub MstH1 ' Script
MostarHoja("Hoja2")
End Sub
Sub MostarHoja(nH As String) ' Subrutina
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "aTableName"
args1(0).Value = nH
dispatcher.executeDispatch(document, ".uno:Show", "", 0, args1())
End Sub
El script es muy simple y económico en términos de líneas de código, lo que nos permite multiplicarlo las veces que resulte necesario en nuestro algoritmo.
Y la subrutina sólo varía respecto a la macro en que hemos sustituido el string que concreta la hoja a mostrar por la variable-parámetro que definimos en su declaración (MostarHoja(nH As String))
La única condición que debemos respetar para que este conjunto script-subrutina funciones correctamente es que desde el script entreguemos un string y no un valor numérico cuando llamemos a la subrutina.
Documento. Este [libro Calc] contiene el código explicado en la entrada. Te sugiero que crees nuevos script que hagan uso de la subrutina para mostrar las hojas ocultas (hay nueve)
NOTAS
(1) Si la hoja no existe o ya está visible la macro no genera error.
No hay comentarios:
Publicar un comentario
Comenta esta entrada