easymacro/docs/es/docs/calc/sheets.md

4.8 KiB

title
Hojas

Trabajar con hojas


Referencia por índice

    doc = app.active
    hoja = doc[0]
    app.debug(hoja.name)

Referencia por nombre

    doc = app.active
    hoja = doc['datos']
    app.debug(hoja.name)

in

Verificar por nombre si una hoja existe.

    doc = app.active
    existe = 'Hoja2' in doc
    app.debug(existe)

len

Contar la cantidad de hojas en el documento.

    doc = app.active
    contar = len(doc)
    app.debug(contar)

iter

Recorrer todas las hojas.

    doc = app.active
    for hoja in doc:
        app.debug(hoja)

Propiedades


code_name

Nombre editable y accesible solo por código.

    hoja = app.active.active

    app.msgbox(hoja.code_name)
    hoja.code_name = 'datos'
    app.msgbox(hoja.code_name)

color

Color de la pestaña.

    hoja = app.active.active
    app.msgbox(hoja.color)

    hoja.color = 'red'
    app.msgbox(hoja.color)

    # RGB
    hoja.color = (125, 200, 10)
    app.msgbox(hoja.color)

doc

Devuelve al documento Calc donde esta la hoja.

    hoja = app.active.active

    doc = hoja.doc
    app.debug(doc.title)

is_protected

Devuelve verdadero (True) si la hoja esta protegida

    hoja = app.active.active

    esta_protegida = hoja.is_protected
    app.debug(esta_protegida)

name

Nombre visible y editable por el usuario.

    hoja = app.active.active

    app.debug(hoja.name)
    hoja.name = 'Nuevo Nombre'
    app.debug(hoja.name)

password

Establecer una contraseña.

!!! tip "Consejo"

Si la hoja ya esta protegida, aún sin contraseña, este método no tendrá ningún efecto.
    hoja = app.active.active
    hoja.password = 'siscaloburropanzon'
    app.debug(hoja.is_protected)

used_area

Referencia al área de usuario actual.

    hoja = app.active.active

    rango = hoja.used_area
    app.debug(rango)

visible

Muestra u oculta la hoja

    hoja = app.active.active

    app.msgbox(hoja.visible)
    hoja.visible = not hoja.visible
    app.msgbox(hoja.visible)
    hoja.visible = not hoja.visible

!!! tip "Cuidado"

Solo funcionará con dos o más hojas, por que debe haber al menos una visible. Siempre puedes trabajar con todo el documento oculto.

Métodos


activate

Pasar el foco a la hoja.

!!! tip inline end "Recuerde"

No es necesario activar una hoja para manipularse.
    doc = app.active
    hoja = doc[-1]
    hoja.activate()

copy

!!! tip "Consejo"

Siempre valide que no exista el nuevo nombre.
    doc = app.active
    hoja = doc[0]

    nuevo_nombre = f'{hoja.name}_2'
    if not nuevo_nombre in doc:
        hoja.copy(nuevo_nombre)

Si no se establece el nuevo nombre, se generá de forma automática: nombre + índice.

    hoja.copy()

copy_to

Copiar la hoja a otro documento. Se usa el mismo nombre.

    doc = app.active
    hoja = doc.active

    documento_nuevo = app.docs.new()
    hoja.copy_to(documento_nuevo)

Usar un nuevo nombre.

    hoja.copy_to(documento_nuevo, 'Nuevo nombre')

move

Mover a la última posición.

    doc = app.active
    hoja = doc[0]
    hoja.move()

Mover a una posición especifica.

    doc = app.active
    hoja = doc[0]
    hoja.move(3)

remove

Remover hoja.

    sheet = app.active.active
    sheet.remove()

!!! warning "Cuidado"

Siempre debe existir al menos una hoja.

unprotect

Quitar contraseña.

    hoja = app.active.active

    hoja.password = 'siscaloburropanzon'
    app.msgbox(hoja.is_protected)

    hoja.unprotect('siscaloburropanzon')
    app.msgbox(hoja.is_protected)

Eventos


names

Obtener una tupla con los eventos soportados por la hoja.

    hoja = app.active.active

    for nombre in hoja.events.names:
        app.debug(nombre)
23/04/2023 16:59:26 - DEBUG - OnFocus
23/04/2023 16:59:26 - DEBUG - OnUnfocus
23/04/2023 16:59:26 - DEBUG - OnSelect
23/04/2023 16:59:26 - DEBUG - OnDoubleClick
23/04/2023 16:59:26 - DEBUG - OnRightClick
23/04/2023 16:59:26 - DEBUG - OnChange
23/04/2023 16:59:26 - DEBUG - OnCalculate

Asignar una macro a un evento.

def on_select(source):
    app.debug(source.AbsoluteName)
    return


def main():
    doc = app.active
    hoja = doc.active

    if 'OnSelect' in hoja.events:
        macro = {'library': 'test', 'name': 'on_select'}
        hoja.events['OnSelect'] = macro

    return

Eliminar la asignación del evento.

    hoja.events['OnSelect'] = {}

O

    hoja.events.remove('OnFocus')