Calc. Crear una hoja (a).
... disponible al pie del libro, después del navegador y antes de la primera hoja visible, o desde el menú Hoja, aquí con varias opciones.
Sub InsertarNuevaHojaDim oHojas As ObjectoHojas = ThisComponent.getSheets()oHojas.insertNewByName("Hoja creada", 2)End Sub
- La función o método insertNewByName() cuenta con dos parámetros: nombre de la nueva hoja y posición-índice.
- En este caso, el primer parámetro se implementa directamente ("Hoja creada"), pero podríamos hacerlo de forma interactiva. Para ello deberemos crear una variable y asociarla a un InputBox para que sea el usuario quien introduzca el nombre que desee. Esto reformula el script inicial como sigue (1):
Sub InsertarNuevaHoja
Dim oHojas As Object
Dim sNombreHoja As String
sNombreHoja = InputBox("Nombre de la nueva hoja")
oHojas = ThisComponent.getSheets()
oHojas.insertNewByName(sNombreHoja, 2)
End Sub
Observa que ahora la variable sNombreHoja se posiciona como primer parámetro en la función insertNewByName()
- Siguiendo con la descripción del primer script, el segundo parámetro, el referido a la posición en función del índice, se resuelve mediante un valor numérico, que puede ser desde 0 hasta el valor que deseemos.
- El valor 0 es admisible al iniciar con ese valor el conteo interno del número de hoja disponibles en un libro Calc (2)
- También podemos permitir al usuario que posiciona la nueva hoja donde desee, aunque posiblemente esta opción sea poco interesante. Más puede serlo utilizar la función getCount() que posiciona la nueva hoja al final del listado de las actuales (3).
- De hecho, podemos usar getCount() para saber el número de hojas de un libro Calc... (MsgBox oHojas.getCount()) y utilizarlo como referencia para tomar decisiones sobre, por ejemplo, la creación o no de más hojas. Pero seguramente utilizaremos con las frecuencia la función getCount() como referencia para posicionar las nuevas hojas, lo que supone usarla como segundo parámetro de la función insertNewByName()
Sub InsertarNuevaHojaDim oHojas As ObjectDim sNombreHoja As StringsNombreHoja = InputBox("Nombre de la nueva hoja")oHojas = ThisComponent.getSheets()oHojas.insertNewByName(sNombreHoja, oHojas.getCount())End Sub
Aunque las opciones son múltiples, me gustaría mostrar cómo automatizar la creación de un número de hojas decidido por el usuario haciendo uso de lo ya expuesto en los script anteriores. Para ello necesitamos únicamente utilizar una estructura de iteración (un For...Next, vamos)
Sub InsertarNuevaHoja
Dim oHojas As Object
Dim sNombreHoja As String, sNumHojas As String
Dim i As Integer
sNombreHoja = InputBox("Nombre identificativo de la hoja")
sNumHojas= InputBox("Número de hojas a crear")
oHojas = ThisComponent.getSheets()
For i=1 To CINt(sNumHojas)
oHojas.insertNewByName(sNombreHoja+i, oHojas.getCount())
Next
End Sub
En base a lo trabajado hasta este momento y lo que ya sabemos sobre el bucle For no creo que te resulte difícil entender este script y su funcionamiento. Si tienes alguna duda ya sabes dónde me puedes encontrar dispuesto a ayudarte a resolverla.
NOTAS
(2) Aunque en la generación de nuevas hojas mediante las utilidades de Calc, éstas se enumeren sucesivamente como Hoja + numeral, y se inicie (primero hoja) como "Hoja1", en realidad, la matriz interna se inicia en la posición 0.
(3) La función getCount() devuelve el número total de hojas que contiene el libro Calc. Al utilizarlo como posición-índice, lo que hacemos es indicar el valor-índice que ocupa la última hoja creada. Nuestro script ubicará la nueva hoja tras la última que haya sido creada. De este modo ésta no se posicionará invariablemente en la posición numérica x, tal y como sucede en las formulaciones anteriores del script en relación con la posición 2 (como sabemos, en realidad la posición 3)
No hay comentarios:
Publicar un comentario
Comenta esta entrada