Jump to content

Macros/Calc/ba019/es

From The Document Foundation Wiki
This page is a translated version of the page Macros/Calc/ba019 and the translation is 98% complete.


Resumen:

Esta página proporciona una macro en LibreOffice Basic que crea un nuevo intervalo con nombre que hace referencia a $Hoja1.$B$3:$D$6. Es un ejemplo extraído del Capítulo 13 ("Calc como base de datos") de la guía de Calc 7.0.

Descripción

Para acceder, crear o eliminar un intervalo con nombre en un documento de CALC, se utiliza el servicio NamedRanges . Este servicio tiene una serie de métodos asociados, los siguientes son particularmente útiles para crear intervalos con nombre:

getByName(Nombre)
Devuelve el intervalo o expresión con el nombre expecificado
getElementNames()
Devuelve una matriz con todos los intervalos con nombre en el documento actual.
hasByName(Nombre)
Devuelve un valor booleano: TRUE si ya existe un intervalo con ese nombre o FALSE en caso contrario.
addNewByName(Nombe, Contenido, Posición, Tipo)
Añade un nuevo intervalo con nombre al documento actual. Este método tiene cuatro argumentos:
  • Nombre - Una cadena con el nombre del nuevo intervalo.
  • Contenido - Una cadena con la dirección del intervalo o la expresión de la fórmula que se nombra.
  • Posición - La dirección base para referencias relativas de celdas
  • Tipo - Una combinación de marcas que especifican el tipo del intervalo con nombre que se está definiendo. Estas marcas se listan en la siguiente tabla. El parámetro predeterminado es cero para cualquier intervalo con nombre.
com.sun.star.sheet.NamedRangeFlag constante referencia de grupo
Valor Nombre Descripción
1 FILTER_CRITERIA El intervalo contiene un criterio de filtro
2 PRINT_AREA El rango puede ser usado como un rango de impresión
4 COLUMN_HEADER El intervalo puede usarse como encabezados de columnas para la impresión
8 ROW_HEADER The range can be used as row headers for printing.

Como ejemplo, el siguiente código utiliza los métodos anteriores para verificar si existe un intervalo con nombre MyNRange. Si no existe, entonces la macro crea el intervalo con ese nombre y lo establece para acceder al intervalo de celdas B3:D6.

Código

Sub AddNamedRange()
  Dim oRange     ' El intervalo creado.
  Dim oRanges    ' TOdos los intervalos con nombre
  Dim sName$     ' Nombre del intervalo con nombre que se creará
  Dim oCell      ' Objeto celda
  Dim s$

  sName$ = "MyNRange"
  oRanges = ThisComponent.NamedRanges
  If NOT oRanges.hasByName(sName$) Then
    REM Establecer la dirección base para referencias relativas de celdas
    Dim oCellAddress As new com.sun.star.table.CellAddress
    oCellAddress.Sheet = 0     'La primera hoja.
    oCellAddress.Column = 1    'Columna B.
    oCellAddress.Row = 2       'Fila 3.

    REM El primer argumento es el nombre del intervalo
    REM El segundo argumento es la cadena de texto que define la fórmula
    REM o expresión que se usará
    REM El tercer argumento especifica la dirección base para
    REM referencias relativas a celdas.
    REM El cuarto argumento es el conjunto de marcas que definen
    REM cómo se usa el intervalo, aunque la mayoría de intervalos utlizan 0
    REM El cuarto argumento utiliza valores de
    REM constantes NamedRangeFlag.
    s$ = "$Sheet1.$B$3:$D$6"
    oRanges.addNewByName(sName$, s$, oCellAddress, 0)
  End If
  REM Obtener el intervalo con nombre creado.
  oRange = ThisComponent.NamedRanges.getByName(sName$)

  REM Mostrar la cadena de texto de la celda $Hoja1.$B$3
  oCell = oRange.getReferredCells().getCellByPosition(0,0)
  Print oCell.getString()
End Sub

Este documento de Calc contiene el código LibreOffice Basic.