Calc. Acceder a una hoja.
Una vez que sabemos crear y copiar hojas mediante código, deberemos aprender a acceder a ellas. Hacerlo manualmente no supone ninguna complicación, pero muchas veces necesitaremos hacerlo mediante código.
Efectivamente, acceder a cualquiera de las hojas de un libro Calc desde el propio servicio es muy sencillo: es suficiente con hacer clic en la pestaña que la identifica, la cual está situada e identificada por sus nombre en el navegador situado al final de la pantalla del libro.
... que activa un menú emergente que presenta la lista de las hojas del libro para que elijamos la que deseemos.
- Posicionarnos "manualmente" en la hoja deseada mediante los procedimientos antes explicados y trabajar con ella como hoja activa mediante un script.
- Trabajar con la hoja deseada mediante script pero sin desplazarnos visualmente a ella. Seguiremos viendo la hoja en la que nos encontremos.
- Convertir la hoja seleccionada en hoja activa mediante código y, a continuación, trabajar con ella como hoja activa.
Sub HojaActivaDim oHoja As ObjectoHoja = ThisComponent.getCurrentController.getActiveSheet()Msgbox oHoja.getName()End Sub
Sub HojaSelectDim oHoja As ObjectDim sHoja As StringDim oDatosId (1) As ObjectDim sNombre As String, sApellidos As StringsHoja = "Exped1"sNombre = "Macario"sApellidos = "Rodríguez López"oHoja =ThisComponent.getSheets().getByName(sHoja)oDatosId(0) = oHoja.getCellRangeByName( "B2" )oDatosId(1) = oHoja.getCellRangeByName( "B3" )oDatosId(0).setString(sNombre)oDatosId(1).setString(sApellidos)
End Sub
oHoja =ThisComponent.getSheets().getByName(sHoja)
... y más concretamente la función getByName(), cuyo único argumento (sHoja) aquí se concreta como Exped1 porque así lo pedimos en la asignación de valor a la variable...
sHoja = "Exped1"
...aunque que podría ser cualquier otra hoja, al igual que podría ser identificada por el valor-índice mediante la función getByIndex() contando que para ello y en ese caso, la variable sHoja mejor debería llamarse iHoja (variable Integer), ya que el índice es un valor numérico, no un string (1)
Con lo que sabemos hasta ahora ya disponemos de los recursos necesarios para que el acceso a una hoja no suponga un problema, debiendo elegir el procedimiento que mejor se ajuste a nuestras necesidades. Pero aun disponemos de una tercera opción: convertir una hoja en hoja activa y desplazarnos visualmente a ella, obviamente sin estar previamente situados físicamente en ella. Veamos este último script:
Sub ActivaPorIndice
Dim Doc As Object, sheet As Object, oHoja As Object
doc = ThisComponent
sheet = doc.Sheets.getByIndex(5)
doc.CurrentController.setActiveSheet(sheet)
oHoja = ThisComponent.getCurrentController.getActiveSheet()
Msgbox oHoja.getName()
End sub
Creo que ya adivinaste en qué consiste este script: efectivamente, convierte en hoja activa la hoja que ocupa la posición 5 (esto es: la sexta hoja del libro) y nos desplaza hasta ella (efecto de convertirla en la hoja activa). Esto es posible gracias a la combinación de estas dos acciones:
- Identificamos la hoja que deseamos convertir en activa: doc.Sheets.getByIndex(5)
- Pasamos el control (foco o cursor) a la hoja definida como hoja activa: doc.CurrentController.setActiveSheet(sheet).
- Finalmente definimos como la hoja como activa: ThisComponent.getCurrentController.getActiveSheet()... (2)
- ... y para asegurarnos de estar donde queremos solicitamos información mediante MsgBox: Msgbox oHoja.getName() (3)
No hay comentarios:
Publicar un comentario
Comenta esta entrada