Qualche volta la registrazione di una macro fallisce

From Apache OpenOffice Wiki
< IT‎ | Documentation‎ | OOo3 User Guides‎ | Getting Started
Revision as of 14:04, 24 August 2010 by Scaligero (Talk | contribs)

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



Comprendere il funzionamento di OpenOffice.org è importante per capire come e perché il registratore di macro a volte non funziona. La causa primaria è collegata al framework dei comandi e al suo collegamento al registratore di macro.

Il framework dei comandi

Lo scopo del framework dei comandi è quello di dare dei componenti di accesso standard (documents) per i comandi che corrispondono di solito alle voci di menu. Posso fare clic su File > Salva direttamente dal menu, utilizzare la scorciatoia da tastiera Ctrl+S, oppure fare clic sull'icona Salva nella barra degli strumenti. Tutti questi comandi sono tradotti nella stessa “richiesta di comando“, che viene mandata al documento corrente.

Il framework dei comandi può anche essere utilizzato per inviare “comandi” direttamente all'interfaccia utente (UI). Per esempio, dopo che si salva il documento, il comando Salva è disabilitato. Non appena si esegue una modifica al documento, il comando viene nuovamente abilitato.

Se vedete un comando di richiesta, si tratta di una stringa di testo come .uno:InsertObject oppure .uno:GoToStartOfLine. Il comando viene inviato al contenitore del documento e il contenitore tralascia il comando fino a quando non trova un oggetto che si può occupare del comando.

Come il registratore macro utilizza il framework dei comandi

Il registratore di macro registra le richieste generate. Il registratore è relativamente semplice da implementare e i medesimi comandi che vengono eseguiti sono salvati per un utilizzo successivo. Il problema consiste nel fatto che non tutti i comandi di richiesta sono completi. Per esempio, l'inserimento di un oggetto genera il seguente codice:

dispatcher.executeDispatch(document, ".uno:InsertObject", "", 0, Array())

Non è possibile identificare il tipo di oggetto da creare o inserire. Se un oggetto viene inserito a partire da un file, non potete specificare quale file inserire.

Ho registrato una macro, e ho fatto clic su Strumenti > Opzioni per aprire e modificare la configurazione. Il registratore di macro non registra alcun cambiamento di configurazione; infatti, il codice generato è commentato, quindi non potrà essere eseguito.

rem dispatcher.executeDispatch(document, ".uno:OptionsTreeDialog", "", 0, Array())

Se aprite una finestra di dialogo, probabilmente verrà generato il comando per aprire la finestra. Ogni azione che eseguite all'interno della finestra di dialogo probabilmente non verrà registrata. Alcuni esempi includono la finestra di dialogo dell'organizzatore di macro, l'inserimento di alcuni caratteri speciali, ed altri tipi di finestre di dialogo simili. Altri possibili problemi nell'utilizzo del registratore di macro possono essere azioni come l'inserimento di una formula, l'impostazione dei dati utente o dei filtri in Calc, azioni eseguite nei moduli dei database e l'esportazione di un file in formato PDF criptato. Non sarete comunque mai certi di quello che funziona e quello che non funziona, fino a quando non lo provate. Le azioni eseguite nella finestra di dialogo di ricerca sono registrate correttamente, per esempio.

Altre opzioni

Quando il registratore di macro non è in grado di risolvere uno specifico problema, la soluzione di solito consiste nello scrivere direttamente il codice utilizzando gli oggetti di OpenOffice.org. Sfortunatamente, la curva di apprendimento per gli oggetti di OOo è abbastanza ripida. Di solito la cosa migliore da fare è cominciare con dei semplici esempi, per poi eseguire pian piano compiti sempre più complessi. Un buon punto di partenza consiste nell'imparare a comprendere il codice delle macro generate.

Se registrate delle macro in Calc, ed il registratore può generare correttamente la macro, esiste un'estensione creata da Paolo Mantovani, che converte le macro di Calc quando vengono registrate. Il codice finale manipola gli oggetti di OpenOffice.org invece di generare richieste. Può essere molto utile per imparare il modello a oggetti.

Potete scaricare il registratore di macro dal sito web di Paolo o direttamente dal sito OOo Macros. Assicuratevi sempre di confrontare entrambi i siti per vedere quale sia la versione più recente.

http://www.paolo-mantovani.org/downloads/DispatchToApiRecorder/


http://www.ooomacros.org/user.php


Content on this page is licensed under the Creative Common Attribution 3.0 license (CC-BY).
Personal tools