jueves, 18 de julio de 2024

Procedimientos. Datos.

Calc. Borrar hojas.

Cuando el docap basado en Calc contiene una serie de hojas que nos interesan en un determinado momento, pero que resultan innecesarias una vez aplicado, resulta conveniente borrar las que no sean necesarias.


En este caso, siguiendo a Mauricio Baeza (1), para borrar hojas disponemos de la función removeByName(Nombre), que contiene el parámetro Nombre, lo que indica que el borrado está determinado por la identificación del nombre de la hoja. Un ejemplo

Sub BorrarHojaNombre

Dim oHojas As Object

oHojas = ThisComponent.getSheets()
oHojas.removeByName( "HojaFinal" )
End Sub

Como puedes imaginar, no es posible borrar una hoja que no exista (hacerlo provoca error del sistema), por lo que es conveniente controlar que se cumple dicha condición mediante un condicional asociado al método  oHojas.hasByName().

También podemos borrar la hoja activa, en la que previamente deberemos estar situados.

Sub BorrarHojaActiva

Dim oHojas As Object
Dim oHojaActiva As Object

oHojaActiva = ThisComponent.getCurrentController.getActiveSheet()
oHojas = ThisComponent.getSheets()
oHojas.removeByName( oHojaActiva.getName() )
End Sub

Dado que un libro debe contener al menos una hoja, si sólo tiene una o si hemos borrado previamente todas las anteriores, al intentar borrar esa única hoja el sistema dará error. 

Podemos controlar ambos errores (nombre de hoja inexistente o intento de borrado de hoja única) introduciendo las siguientes instrucciones en un condicional:

If oHojas.hasByName( sNombre ) And oHojas.getCount()>1 Then
oHojas.removeByName( sNombre )
Else
MsgBox "La hoja no existe o solo queda una"
End If

NOTAS

(1) Mauricio Baeza Servin (2007). Aprendiendo LibreOffice Basic. Documento modificado en septiembre de 2014.

No hay comentarios:

Publicar un comentario

Comenta esta entrada