Macros/Calc/ba019/es
TDF LibreOffice Document Liberation Project Blogs comunitarios Weblate Nextcloud Redmine Ask LibreOffice Donar
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.
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.