Macro per l'aggiornamento degli indici (come ad es. l'Indice generale)

    From The Document Foundation Wiki
    < Macros‎ | Writer
    This page is a translated version of the page Macros/Writer/006 and the translation is 100% complete.


    Other languages:

    Descrizione

    Con gli indici, ad esempio con quello generale, si presenta spesso il problema che questi non vengono aggiornati dopo che sono state effettuate delle modifiche. Si rischia di trasmettere documenti contenenti collegamenti sbagliati.

    Questa macro aggiorna automaticamente i collegamenti presenti in un indice. Può essere utile collegare la macro al comando Salva documento in (Strumenti ▸ Personalizza ▸ Eventi ▸ Salva documento), in modo che i collegamenti siano aggiornati al momento del salvataggio del documento.

    Nell'esempio dell'Indice generale, immaginate di aver creato un documento con diversi Titoli (impostati con un clic del pulsante destro del mouse e Paragrago ▸ Titolo 1, ecc). Dopodiché avete inserito un indice generale con Inserisci ▸ Indice generale e indice analitico ▸ Indice generale, Indice analitico o Bibliografia.... In seguito, se inserirete altri titoli, potrete aggiornare l'indice generale semplicemente eseguendo questa macro.

    Codice

    In LibreOffice Basic:

    Option Explicit
    
    Sub UpdateIndexes()
        '''Aggiorna gli indici, ad esempi quello generale'''
    
        Dim i As Integer
    
        With ThisComponent 'Elabora esclusivamente documenti di Writer
            If .supportsService("com.sun.star.text.GenericTextDocument") Then
                For i = 0 To .getDocumentIndexes().count - 1
                    .getDocumentIndexes().getByIndex(i).update()     
                Next i
            End If
        End With ' ThisComponent
    
    End Sub ' UpdateIndexes

    In Python:

    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    
    import uno
    
    def UpdateIndexes():
        """Aggiorna gli indici, ad esempio quello generale"""
    
        thisComponent = XSCRIPTCONTEXT.getDocument()
        if thisComponent.supportsService("com.sun.star.text.GenericTextDocument"):
            count = thisComponent.getDocumentIndexes().getCount()
            for i in range(0,count):
                thisComponent.getDocumentIndexes().getByIndex(i).update()