Configuración global de Calc

From Apache OpenOffice Wiki
< ES‎ | Manuales‎ | GuiaAOO‎ | TemasAvanzados‎ | Macros‎ | StarBasic‎ | TrabajandoConCalc
Revision as of 18:03, 28 March 2013 by Salva (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search


Editing.png Esta página está en estado borrador.

En este capitulo, veremos algunas opciones que afectan a la configuración global de Calc, por ejemplo, lo que queremos ver y lo que no.


 Sub ConfigurarCalc1()
 Dim oDoc As Object
 Dim oCC As Object
 
     oDoc = ThisComponent
     oCC = oDoc.getCurrentController()
 
     'Mostramos las formulas en vez de su resultado
     'el valor "normal" es falso (False)
     oCC.showFormulas = True
 
     'Ocultamos los valores cero
     'el valor normal es verdadero (True)
     oCC.showZeroValues = False
 
     'Podemos automáticamente diferenciar los valores de
     'formulas con esta propiedad, los valores los pone
     'en azul y las formulas en verde, pero ten cuidado
     'no podrás establecer el color de fuente mientras
     'esta propiedad este en verdadera (True)
     oCC.IsValueHighlightingEnabled = True
 
     'Esta propiedad, solo oculta el pequeño cuadro rojo
     'que nos indica que una celda tiene una nota, la nota
     'sigue existiendo, establecelo en verdadero para volver
     'a ver este pequeño cuadro
     oCC.showNotes = False
 
 End Sub


También podemos mostrar u ocultar otros elementos de la hoja de calculo, en todos los ejemplos siguientes, alternamos el valor de las propiedades, es decir, si están visibles se ocultan y viceversa:


 Sub ConfigurarCalc2()
 Dim oDoc As Object
 Dim oCC As Object
 
     oDoc = ThisComponent
     oCC = oDoc.getCurrentController()
 
     'Ocultamos o mostramos las barras de desplazamiento
     'tanto vertical como horizontal
     oCC.HasVerticalScrollBar = Not oCC.HasVerticalScrollBar
     oCC.HasHorizontalScrollBar = Not oCC.HasHorizontalScrollBar
 
     'Las etiqueas de las hojas
     oCC.HasSheetTabs = Not oCC.HasSheetTabs
 
     'Los encabezados de filas y columnas
     oCC.HasColumnRowHeaders = Not oCC.HasColumnRowHeaders
 
     'Las líneas de división de las celdas
     oCC.showGrid = Not oCC.showGrid
 
     'Las líneas de ayuda cuando se mueve un objeto gráfico
     oCC.showHelpLines = Not oCC.ShowHelpLines
 
     'El icono de anclaje cuando se selecciona un objeto gráfico
     oCC.showAnchor = Not oCC.ShowAnchor
 
     'Los saltos de página
     oCC.showPageBreaks = Not oCC.ShowPageBreaks
 
     'Los objetos e imagenes
     oCC.showObjects = Not oCC.showObjects
 
     'Los gráficos
     oCC.showCharts = Not oCC.showCharts
 
     'Las formas
     oCC.showDrawing = Not oCC.showDrawing
 
     'Los símbolos de esquema y agrupamiento
     oCC.IsOutlineSymbolsSet = Not oCC.IsOutlineSymbolsSet
 
 End Sub


Ten cuidado con ocultar algunos elementos, por ejemplo, si ocultas las etiquetas de las hojas, el usuario puede cambiarse aun con la combinación de teclas CTRL+RePag (AvPag), los saltos de página se ocultan, pero siguen existiendo, así como los gráficos, objetos, formas y símbolos de esquema. En el siguiente ejemplo, cambiamos el color de las líneas de división de las celdas y establecemos el zoom con un porcentaje.


 Sub ConfigurarCalc3()
 Dim oDoc As Object
 Dim oCC As Object
 
     oDoc = ThisComponent
     oCC = oDoc.getCurrentController()
 
     'Puedes cambiar el color de las líneas de división de celdas
     'el valor predeterminado es gris claro = 12632256
     oCC.gridColor = RGB(Rnd()*255,Rnd()*255,Rnd()*255)
 
     'Establecer el tipo de Zoom
     ' 1 = Ancho de página
     ' 2 = Ajustar al ancho y alto
     ' 3 = Valor
     oCC.ZoomType = 3
 
     'Si lo establece en 3 (valor), puedes establecer 
     'el porcentaje de zoom entre 20% y 400%
     oCC.ZoomValue = 130
 
 End Sub


Si estableces el porcentaje fuera de sus limites (20% a 400%), este se ajustará al más cercano. Las siguientes propiedades, solo tiene efecto sobre una sola hoja, pero me parece que son interesantes de ver. Podemos consultar y establecer la primer fila y columna visible.


 Sub ConfigurarCalc4()
 Dim oDoc As Object
 Dim oCC As Object
 
     oDoc = ThisComponent
     oCC = oDoc.getCurrentController()
 
     'La primer fila y columna visible actuales
     MsgBox "Fila: " & oCC.getFirstVisibleRow & Chr(13) & "Columna: " & oCC.getFirstVisibleColumn
 
     'Lo interesante, es que podemos establecerlas para que el usuario
     'vea lo que queramos que vea
     oCC.setFirstVisibleRow( 50 )
     oCC.setFirstVisibleColumn( 10 )
 
 End Sub


Podemos obtener el rango visible, como mostramos en el ejemplo, este rango se ve afectado por el nivel de zoom establecido en la hoja.


 Sub ConfigurarCalc5()
 Dim oDoc As Object
 Dim oCC As Object
 Dim oRangoVisible As Object
 
     oDoc = ThisComponent
     oCC = oDoc.getCurrentController()
 
     'Obtenemos el rango visible
     oRangoVisible = oCC.getVisibleRange()
     'Mostramos su dirección
     MsgBox DireccionRango( oRangoVisible )
 
     'Cambiamos el zoom
     oCC.ZoomType = 3
     oCC.ZoomValue = oCC.ZoomValue + 25
 
     'Volvemos a consultar el rango visible
     oRangoVisible = oCC.getVisibleRange()
     MsgBox DireccionRango( oRangoVisible )
 
 End Sub
 
 Function DireccionRango( DirRango As Object) As String
 Dim oHA As Object
 Dim sTmp As String
 
     oHA = ThisComponent.getCurrentController.getActiveSheet
     sTmp = oHA.getColumns.getByIndex(DirRango.StartColumn).getName() & _
             DirRango.StartRow + 1 & ":" & _
             oHA.getColumns.getByIndex(DirRango.EndColumn).getName() & _
             DirRango.EndRow + 1
 
     DireccionRango = sTmp
 
 End Function


Podemos saber si la ventana esta dividida.


 Sub ConfigurarCalc6()
 Dim oDoc As Object
 Dim oCC As Object
 Dim sInfo As String
 
     oDoc = ThisComponent
     oCC = oDoc.getCurrentController()
 
     'Consultamos si la ventana esta dividida
     If oCC.getIsWindowSplit Then
         'Mostramos la información
         sInfo = "La ventana esta dividida a: " & Chr(13) & _
                 oCC.getSplitHorizontal & " pixeles de la izquierda y" & Chr(13) & _
                 oCC.getSplitVertical & " pixeles de la parte superior" & Chr(13) & _
                 "En la columna: " & oCC.getSplitColumn & " y en la fila: " & oCC.getSplitRow
         MsgBox sInfo
     Else
         MsgBox "La ventana no esta dividida"
     End If
 
 End Sub


Por supuesto podemos establecer la división donde quieras.


 Sub ConfigurarCalc7()
 Dim oDoc As Object
 Dim oCC As Object
 Dim sInfo As String
 
     oDoc = ThisComponent
     oCC = oDoc.getCurrentController()    
     'Si no esta dividida la dividimos
     If Not oCC.getIsWindowSplit Then
         'Las unidades son pixeles
         oCC.splitAtPosition( 500,300 )
     End If
 
 End Sub


Si quieres establecer solo una división, establece la que no quieras en cero, por ejemplo, si solo quieres la división vertical usas.


        oCC.splitAtPosition( 500,0 )


Para la horizontal.


        oCC.splitAtPosition( 0,300 )


Para eliminar la división.


        oCC.splitAtPosition( 0,0 )


También podemos saber si la ventana esta fija.


 Sub ConfigurarCalc8()
 Dim oDoc As Object
 Dim oCC As Object
 Dim sInfo As String
 
     oDoc = ThisComponent
     oCC = oDoc.getCurrentController()    
     'Consultamos si la ventana esta fija
     If oCC.hasFrozenPanes Then
         MsgBox "La ventana esta fija"
     Else
         MsgBox "La ventana no esta fija"
     End If
 
 End Sub


Y establecer la posición de esta, aquí se usa la columna y fila deseada.


 Sub ConfigurarCalc9()
 Dim oDoc As Object
 Dim oCC As Object
 Dim sInfo As String
 
     oDoc = ThisComponent
     oCC = oDoc.getCurrentController()    
     'Establecemos la división en la columna 5 y fila 10
     oCC.freezeAtPosition( 5, 10) 
 
 End Sub


Al igual que con la ventana dividida, si quiere establecer solo un sentido, establece el otro en cero, si estableces los dos argumentos en ceros, no eliminaras la división, si que la ventana se fijara en la posición actual del cursor de celda.


oCC.freezeAtPosition( 0, 0)


Si quieres quitarla, usa el mismo método visto anteriormente.


oCC.splitAtPosition( 0,0 )


Si divides la ventana por cualquiera de los dos métodos vistos, estás pueden tener 2 o cuatro partes, cada una de estas partes se llama panel, y puedes tener acceso a cada rango de cada panel, como se muestra en el siguiente ejemplo.


 Sub ConfigurarCalc10()
 Dim oDoc As Object
 Dim oCC As Object
 Dim oPanel As Object
 Dim co1 As Byte
 Dim sInfo As String
 
     oDoc = ThisComponent
     oCC = oDoc.getCurrentController()
     'La ventans debe estar fija o dividida
     If oCC.getIsWindowSplit Or oCC.hasFrozenPanes Then
         For co1 = 0 To oCC.getCount - 1
             'Obtenemos acceso a cada panel
             oPanel = oCC.getByIndex( co1 )
             'Mostramos su dirección
             MsgBox "La dirección del Panel " & co1+1 & " es: " & DireccionRango2( oPanel.getReferredCells )
         Next co1
     End If    
 End Sub
 
 Function DireccionRango2(Rango As Object) As String 
 Dim sTmp As String
 
     Select Case Rango.getImplementationName()
         Case "ScCellObj"
             sTmp = Rango.getSpreadsheet.getName() & "." & _
                     Rango.getColumns().getByIndex(0).getName() & _
                     Rango.getCellAddress.Row + 1
         Case "ScCellRangeObj", "ScCellCursorObj"
             sTmp = Rango.getSpreadsheet.getName() & "." & _
                     Rango.getColumns().getByIndex(0).getName() & _
                     Rango.getRangeAddress.StartRow + 1 & ":" & _
                     Rango.getColumns().getByIndex(Rango.getColumns().getCount()-1).getName() & _
                     Rango.getRangeAddress.EndRow + 1
         Case "ScCellRangesObj"
             sTmp = Join( Split(Rango.getRangeAddressesAsString(),";"),Chr(13) )
     End Select
 
     DireccionRango2 = sTmp
 
 End Function


La función anterior ya la hemos usado anteriormente, aquí la repetimos por si no la tienes a mano, y con esto damos por terminado un nuevo tema.



ES.Plantillas.Logo foro es.png
Si tienes dudas acerca de lo aquí explicado, tienes algún problema con AOO,
o quieres ampliar la información, no dudes en dirigirte al

Foro Oficial en español de Apache OpenOffice para Macros y API UNO

Personal tools