Difference between revisions of "IT/Documentation/OOo3 User Guides/Getting Started/Creating a macro"

From Apache OpenOffice Wiki
Jump to: navigation, search
Line 83: Line 83:
  
 
''Listato 2: Copia del valore numerico all'inizio della colonna.''
 
''Listato 2: Copia del valore numerico all'inizio della colonna.''
 
 
 
 
 
sub CopyNumToCol1
 
rem -------------------------------------------------------------
 
rem definizione variabili
 
dim document  as object
 
dim dispatcher as object
 
rem -------------------------------------------------------------
 
rem accesso al documento
 
document  <nowiki>=</nowiki> ThisComponent.CurrentController.Frame
 
dispatcher <nowiki>=</nowiki> createUnoService("com.sun.star.frame.DispatchHelper")
 
 
rem (2) Premete ''Ctrl+Freccia destra'' per muovere il cursore all'inizio di “specifies”.
 
dispatcher.executeDispatch(document, ".uno:GoToNextWord", "", 0, Array())
 
 
rem (3) Premete ''Backspace'' due volte per rimuovere lo spazio e la tabulazione.
 
dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())
 
 
rem -------------------------------------------------------------
 
dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())
 
 
rem (4) Premete ''Tab'' per aggiungere una tabulazione senza lo spazio dopo il nome della costante.
 
dim args4(0) as new com.sun.star.beans.PropertyValue
 
args4(0).Name <nowiki>=</nowiki> "Text"
 
args4(0).Value <nowiki>=</nowiki> CHR$(9)
 
 
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args4())
 
 
rem (5) Premete ''Canc'' per cancellare la s minuscola....
 
dispatcher.executeDispatch(document, ".uno:Delete", "", 0, Array())
 
 
rem (5) ... e dopo premete ''S'' per aggiungere una S maiuscola.
 
dim args6(0) as new com.sun.star.beans.PropertyValue
 
args6(0).Name <nowiki>=</nowiki> "Text"
 
args6(0).Value <nowiki>=</nowiki> "S"
 
 
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args6())
 
 
rem (6) Premete ''Ctrl+Freccia destra'' due volte per muovere il cursore all'inizio del numero.
 
dispatcher.executeDispatch(document, ".uno:GoToNextWord", "", 0, Array())
 
 
rem -------------------------------------------------------------
 
dispatcher.executeDispatch(document, ".uno:GoToNextWord", "", 0, Array())
 
 
rem (7) Premete ''Ctrl+Shift+Freccia destra'' per selezionare il numero.
 
dispatcher.executeDispatch(document, ".uno:WordRightSel", "", 0, Array())
 
 
rem (8) Premete ''Ctrl+C'' per copiare il testo selezionato negli appunti.
 
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
 
 
rem (9) Premete ''Fine'' per muovere il cursore alla fine della riga.
 
dispatcher.executeDispatch(document, ".uno:GoToEndOfLine", "", 0, Array())
 
 
rem (10) Premete ''Backspace'' due volte per rimuovere gli spazi rimanenti.
 
dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())
 
 
rem -------------------------------------------------------------
 
dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())
 
 
rem (11) Premete ''Home'' per muovere il cursore all'inizio della riga.
 
dispatcher.executeDispatch(document, ".uno:GoToStartOfLine", "", 0, Array())
 
 
rem (12) Premete ''Ctrl+V'' per incollare il numero selezionato all'inizio della riga.
 
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
 
 
rem (13) Premete ''Backspace'' per rimuovere lo spazio rimasto.
 
dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())
 
 
rem (14) Premete ''Tab'' per inserire una tabulazione fra il numero ed il nome.
 
dim args17(0) as new com.sun.star.beans.PropertyValue
 
args17(0).Name <nowiki>=</nowiki> "Text"
 
args17(0).Value <nowiki>=</nowiki> CHR$(9)
 
 
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args17())
 
 
rem (15) Premete ''Home'' per andare all'inizio della riga.
 
dispatcher.executeDispatch(document, ".uno:GoToStartOfLine", "", 0, Array())
 
 
rem (16) Premete ''Freccia giù'' per muovere il cursore alla riga successiva.
 
dim args19(1) as new com.sun.star.beans.PropertyValue
 
args19(0).Name <nowiki>=</nowiki> "Count"
 
args19(0).Value <nowiki>=</nowiki> 1
 
args19(1).Name <nowiki>=</nowiki> "Select"
 
args19(1).Value <nowiki>=</nowiki> false
 
 
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args19())
 
end sub
 
 
I movimenti del cursore vengono utilizzati per tutte le operazioni (al contrario di quanto accade nella ricerca). Se eseguite la macro nella riga contenente DONTKNOW, la parola ''weight'' viene spostata davanti alla riga e il primo “The” viene cambiato in “She”. In questo caso la macro non funziona bene, ma non dovrei eseguire la macro nelle righe che non hanno il formato appropriato: bisogna elaborarle manualmente.
 
 
== Esecuzione rapida di una macro ==
 
È tedioso eseguire ripetutamente una macro facendo sempre clic su '''Strumenti > Macro > Esegui Macro''' (vedere Errore: sorgente del riferimento non trovata). Potete eseguire la macro dall'interno dell'IDE. Fate clic su '''Strumenti > Macro > Organizza Macro > OpenOffice.org Basic''' per aprire la finestra di dialogo Macro OpenOffice.org Basic. Selezionate la vostra macro e fate clic su '''Modifica''' per aprire la macro nell'IDE.
 
 
L'IDE contiene un'icona '''Esegui Programma Basic''' nella barra degli strumenti, che esegue la prima macro presente nell'IDE. Fino a quando non la cambiate, la prima macro è quella vuota denominata Main. Modificate Main in maniera tale che appaia come mostrato nel Listato 2.
 
 
''Listato 2: Modifica di Main per invocare CopiaNumAllaCol1.''
 
 
Sub Main
 
  CopiaNumAllaCol1
 
End Sub
 
 
Adesso, potete eseguire CopiaNumAllaCol1 facendo clic ripetutamente sull'icona '''Esegui Programma Basic''' nella barra degli strumenti dell'IDE. Questo metodo è semplice e rapido, specialmente per macro temporanee che vengono utilizzate solo poche volte e poi cancellate.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  
 
<code>
 
<code>
 
   sub CopyNumToCol1
 
   sub CopyNumToCol1
 
   rem ----------------------------------------------------------------------
 
   rem ----------------------------------------------------------------------
   rem define variables
+
   rem definizione variabili
 
   dim document  as object
 
   dim document  as object
 
   dim dispatcher as object
 
   dim dispatcher as object
 
   rem ----------------------------------------------------------------------
 
   rem ----------------------------------------------------------------------
   rem get access to the document
+
   rem accesso al documento
 
   document  = ThisComponent.CurrentController.Frame
 
   document  = ThisComponent.CurrentController.Frame
 
   dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
 
   dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
 
    
 
    
   rem (2) Press Ctrl+Right Arrow to move the cursor to the start of "specifies".
+
   rem (2) Premete Ctrl+Freccia destra per muovere il cursore all'inizio di "specifies".
 
   dispatcher.executeDispatch(document, ".uno:GoToNextWord", "", 0, Array())
 
   dispatcher.executeDispatch(document, ".uno:GoToNextWord", "", 0, Array())
 
    
 
    
   rem (3) Press Backspace twice to remove the tab and the space.
+
   rem (3) Premete Backspace due volte per rimuovere lo spazio e la tabulazione.
 
   dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())
 
   dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())
 
    
 
    
Line 226: Line 104:
 
   dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())
 
   dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())
 
    
 
    
   rem (4) Press Tab to add the tab without the space after the constant name.
+
   rem (4) Premete Tab per aggiungere una tabulazione senza lo spazio dopo il nome della costante.
 
   dim args4(0) as new com.sun.star.beans.PropertyValue
 
   dim args4(0) as new com.sun.star.beans.PropertyValue
 
   args4(0).Name = "Text"
 
   args4(0).Name = "Text"
Line 233: Line 111:
 
   dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args4())
 
   dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args4())
 
    
 
    
   rem (5) Press Delete to delete the lower case s ....
+
   rem (5) Premete Canc per cancellare la s minuscola....
 
   dispatcher.executeDispatch(document, ".uno:Delete", "", 0, Array())
 
   dispatcher.executeDispatch(document, ".uno:Delete", "", 0, Array())
 
    
 
    
   rem (5) ... and then press S to add an upper case S.
+
   rem (5) ... e dopo premete S per aggiungere una S maiuscola.
 
   dim args6(0) as new com.sun.star.beans.PropertyValue
 
   dim args6(0) as new com.sun.star.beans.PropertyValue
 
   args6(0).Name = "Text"
 
   args6(0).Name = "Text"
Line 243: Line 121:
 
   dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args6())
 
   dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args6())
 
    
 
    
   rem (6) Press Ctrl+Right Arrow twice to move the cursor to the number.
+
   rem (6) Premete Ctrl+Freccia destra due volte per muovere il cursore all'inizio del numero.
 
   dispatcher.executeDispatch(document, ".uno:GoToNextWord", "", 0, Array())
 
   dispatcher.executeDispatch(document, ".uno:GoToNextWord", "", 0, Array())
 
    
 
    
Line 249: Line 127:
 
   dispatcher.executeDispatch(document, ".uno:GoToNextWord", "", 0, Array())
 
   dispatcher.executeDispatch(document, ".uno:GoToNextWord", "", 0, Array())
 
    
 
    
   rem (7) Press Ctrl+Shift+Right Arrow to select the number.
+
   rem (7) Premete Ctrl+Shift+Freccia destra per selezionare il numero.
 
   dispatcher.executeDispatch(document, ".uno:WordRightSel", "", 0, Array())
 
   dispatcher.executeDispatch(document, ".uno:WordRightSel", "", 0, Array())
 
    
 
    
   rem (8) Press Ctrl+C to copy the selected text to the clipboard.
+
   rem (8) Premete Ctrl+C per copiare il testo selezionato negli appunti.
 
   dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
 
   dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
 
    
 
    
   rem (9) Press End to move the cursor to the end of the line.
+
   rem (9) Premete Fine per muovere il cursore alla fine della riga.
 
   dispatcher.executeDispatch(document, ".uno:GoToEndOfLine", "", 0, Array())
 
   dispatcher.executeDispatch(document, ".uno:GoToEndOfLine", "", 0, Array())
 
    
 
    
   rem (10) Press Backspace twice to remove the two trailing spaces.
+
   rem (10) Premete Backspace due volte per rimuovere gli spazi rimanenti.
 
   dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())
 
   dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())
 
    
 
    
Line 264: Line 142:
 
   dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())
 
   dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())
 
    
 
    
   rem (11) Press Home to move the cursor to the start of the line.
+
   rem (11) Premete Home per muovere il cursore all'inizio della riga.
 
   dispatcher.executeDispatch(document, ".uno:GoToStartOfLine", "", 0, Array())
 
   dispatcher.executeDispatch(document, ".uno:GoToStartOfLine", "", 0, Array())
 
    
 
    
   rem (12) Press Ctrl+V to paste the selected number to the start of the line.
+
   rem (12) Premete Ctrl+V per incollare il numero selezionato all'inizio della riga.
 
   dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
 
   dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
 
    
 
    
   rem (13) Press Backspace to remove the extra space.
+
   rem (13) Premete Backspace per rimuovere lo spazio rimasto.
 
   dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())
 
   dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())
 
    
 
    
   rem (14) Press Tab to insert a tab between the number and the name.
+
   rem (14) Premete Tab per inserire una tabulazione fra il numero ed il nome.
 
   dim args17(0) as new com.sun.star.beans.PropertyValue
 
   dim args17(0) as new com.sun.star.beans.PropertyValue
 
   args17(0).Name = "Text"
 
   args17(0).Name = "Text"
Line 280: Line 158:
 
   dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args17())
 
   dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args17())
 
    
 
    
   rem (15) Press Home to move to the start of the line.
+
   rem (15) Premete Home per andare all'inizio della riga.
 
   dispatcher.executeDispatch(document, ".uno:GoToStartOfLine", "", 0, Array())
 
   dispatcher.executeDispatch(document, ".uno:GoToStartOfLine", "", 0, Array())
 
    
 
    
   rem (16) Press down arrow to move to the next line.
+
   rem (16) Premete Freccia giù per muovere il cursore alla riga successiva.
 
   dim args19(1) as new com.sun.star.beans.PropertyValue
 
   dim args19(1) as new com.sun.star.beans.PropertyValue
 
   args19(0).Name = "Count"
 
   args19(0).Name = "Count"
Line 293: Line 171:
 
   end sub
 
   end sub
 
</code>
 
</code>
 +
 +
I movimenti del cursore vengono utilizzati per tutte le operazioni (al contrario di quanto accade nella ricerca). Se eseguite la macro nella riga contenente DONTKNOW, la parola ''weight'' viene spostata davanti alla riga e il primo “The” viene cambiato in “She”. In questo caso la macro non funziona bene, ma non dovrei eseguire la macro nelle righe che non hanno il formato appropriato: bisogna elaborarle manualmente.
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
== Esecuzione rapida di una macro ==
 +
È tedioso eseguire ripetutamente una macro facendo sempre clic su '''Strumenti > Macro > Esegui Macro''' (vedere Errore: sorgente del riferimento non trovata). Potete eseguire la macro dall'interno dell'IDE. Fate clic su '''Strumenti > Macro > Organizza Macro > OpenOffice.org Basic''' per aprire la finestra di dialogo Macro OpenOffice.org Basic. Selezionate la vostra macro e fate clic su '''Modifica''' per aprire la macro nell'IDE.
 +
 +
L'IDE contiene un'icona '''Esegui Programma Basic''' nella barra degli strumenti, che esegue la prima macro presente nell'IDE. Fino a quando non la cambiate, la prima macro è quella vuota denominata Main. Modificate Main in maniera tale che appaia come mostrato nel Listato 2.
 +
 +
''Listato 2: Modifica di Main per invocare CopiaNumAllaCol1.''
 +
 +
Sub Main
 +
  CopiaNumAllaCol1
 +
End Sub
 +
 +
Adesso, potete eseguire CopiaNumAllaCol1 facendo clic ripetutamente sull'icona '''Esegui Programma Basic''' nella barra degli strumenti dell'IDE. Questo metodo è semplice e rapido, specialmente per macro temporanee che vengono utilizzate solo poche volte e poi cancellate.
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
  
 
Cursor movements are used for all operations (as opposed to searching). If run on the DONTKNOW line, the word ''weight'' is moved to the front of the line, and the first “The" is changed to “She". This is not perfect, but I should not have run the macro on the lines that did not have the proper format; I need to do these manually.
 
Cursor movements are used for all operations (as opposed to searching). If run on the DONTKNOW line, the word ''weight'' is moved to the front of the line, and the first “The" is changed to “She". This is not perfect, but I should not have run the macro on the lines that did not have the proper format; I need to do these manually.

Revision as of 16:22, 16 July 2010







Traduzione in corso - Translation in progress





Di solito mi faccio due domande, prima di registrare una macro:

  1. Il compito può essere eseguito come un semplice insieme di comandi che non cambiano?
  2. Posso organizzare i passaggi in maniera tale che l'ultimo comando posizioni il cursore in modo da accettare direttamente il prossimo comando?

Un esempio complesso

Di solito copio righe e colonne di dati da un sito web e li formatto in una tabella, in un documento di testo. Prima di tutto, copio la tabella dal sito web negli appunti. Per evitare di copiare anche la formattazione e il tipo di carattere, incollo il testo in un documento Writer come testo non formattato. Riformatto il testo con l'utilizzo delle tabulazioni tra le colonne, così posso utilizzare Tabella > Converti > Testo in tabella per convertirlo in una tabella.

Analizzo il testo, per vedere se posso registrare una macro che formatti il testo (ricordando le due domande che mi sono posto). Come esempio, ho copiato il gruppo di costanti FontWeight dal sito web OpenOffice.org. La prima colonna indica il nome delle costanti. Ogni nome è seguito da uno spazio e una tabulazione.

DONTKNOW La dimensione del carattere non viene specificata.
THIN Identifica una dimensione del font del 50%.
ULTRALIGHT    Identifica una dimensione del carattere del 60%.
LIGHT Indica una dimensione del carattere del 75%.
SEMILIGHT Identifica una dimensione del carattere del 90%.
NORMAL Identifica una dimensione standard del carattere.
SEMIBOLD Identifica una dimensione del carattere del 110%.
BOLD Identifica una dimensione del carattere del 150%.
ULTRABOLD Identifica una dimensione del carattere del 175%.
BLACK Identifica una dimensione del carattere del 200%.

Voglio che la prima colonna contenga il valore numerico, la seconda colonna il nome, e la terza la descrizione. Il lavoro è facilmente eseguibile per ogni riga, eccetto per DONTKNOW e NORMAL, che non contengono un valore numerico, ma so che i valori sono rispettivamente 0 e 100, quindi posso inserirli manualmente.

I dati possono essere ripuliti in molti modi — tutti semplici. Il primo esempio utilizza la pressione di opportuni tasti presumendo che il cursore si trovi all'inizio della riga con il testo THIN.

  1. Fate clic su Strumenti > Macro > Registra Macro per cominciare la registrazione di una macro.
  2. Premete Ctrl+Freccia destra per muovere il cursore all'inizio delle specifiche.
  3. Premete Backspace due volte per rimuovere lo spazio e la tabulazione.
  4. Premete Tab per aggiungere una tabulazione senza lo spazio dopo il nome della costante.
  5. Premete Canc per cancellare la s minuscola, e dopo premete S per aggiungere una S maiuscola.
  6. Premete Ctrl+Freccia destra due volte per muovere il cursore all'inizio del numero.
  7. Premete Ctrl+Maiusc+Freccia destra per selezionare e muovere il cursore prima del simbolo %.
  8. Premete Ctrl+C per copiare il testo selezionato negli appunti.
  9. Premete Fine per muovere il cursore alla fine della riga.
  10. Premete Backspace due volte per rimuovere gli spazi rimanenti.
  11. Premete Home Per muovere il cursore all'inizio della riga.
  12. Premete Ctrl+V per incollare il numero selezionato all'inizio della riga.
  13. Quando incollate il valore, verrà incollato anche uno spazio extra, quindi premete Backspace per rimuovere lo spazio in più.
  14. Premete Tab per inserire una tabulazione fra il numero e il nome.
  15. Premete Home per muovervi all'inizio della riga.
  16. Premete Freccia giù per muovere il cursore alla riga successiva.
  17. Fermate la registrazione e salvate la macro.

Ci vuole molto più tempo per leggere e scrivere i passi da eseguire che per eseguire la macro. Lavorate con calma e pensate ai passi e a come li fareste voi. Con la pratica verrà tutto più naturale.

La macro generata è stata modificata per contenere il numero del passo nei commenti, per vedere la corrispondenza con le azioni descritte sopra.

Listato 2: Copia del valore numerico all'inizio della colonna.

 sub CopyNumToCol1
 rem ----------------------------------------------------------------------
 rem definizione variabili
 dim document   as object
 dim dispatcher as object
 rem ----------------------------------------------------------------------
 rem accesso al documento
 document   = ThisComponent.CurrentController.Frame
 dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
 
 rem (2) Premete Ctrl+Freccia destra per muovere il cursore all'inizio di "specifies".
 dispatcher.executeDispatch(document, ".uno:GoToNextWord", "", 0, Array())
 
 rem (3) Premete Backspace due volte per rimuovere lo spazio e la tabulazione.
 dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())
 
 rem ----------------------------------------------------------------------
 dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())
 
 rem (4) Premete Tab per aggiungere una tabulazione senza lo spazio dopo il nome della costante.
 dim args4(0) as new com.sun.star.beans.PropertyValue
 args4(0).Name = "Text"
 args4(0).Value = CHR$(9)
 
 dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args4())
 
 rem (5) Premete Canc per cancellare la s minuscola....
 dispatcher.executeDispatch(document, ".uno:Delete", "", 0, Array())
 
 rem (5) ... e dopo premete S per aggiungere una S maiuscola.
 dim args6(0) as new com.sun.star.beans.PropertyValue
 args6(0).Name = "Text"
 args6(0).Value = "S"
 
 dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args6())
 
 rem (6) Premete Ctrl+Freccia destra due volte per muovere il cursore all'inizio del numero.
 dispatcher.executeDispatch(document, ".uno:GoToNextWord", "", 0, Array())
 
 rem ----------------------------------------------------------------------
 dispatcher.executeDispatch(document, ".uno:GoToNextWord", "", 0, Array())
 
 rem (7) Premete Ctrl+Shift+Freccia destra per selezionare il numero.
 dispatcher.executeDispatch(document, ".uno:WordRightSel", "", 0, Array())
 
 rem (8) Premete Ctrl+C per copiare il testo selezionato negli appunti.
 dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
 
 rem (9) Premete Fine per muovere il cursore alla fine della riga.
 dispatcher.executeDispatch(document, ".uno:GoToEndOfLine", "", 0, Array())
 
 rem (10) Premete Backspace due volte per rimuovere gli spazi rimanenti.
 dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())
 
 rem ----------------------------------------------------------------------
 dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())
 
 rem (11) Premete Home per muovere il cursore all'inizio della riga.
 dispatcher.executeDispatch(document, ".uno:GoToStartOfLine", "", 0, Array())
 
 rem (12) Premete Ctrl+V per incollare il numero selezionato all'inizio della riga.
 dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
 
 rem (13) Premete Backspace per rimuovere lo spazio rimasto.
 dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())
 
 rem (14) Premete Tab per inserire una tabulazione fra il numero ed il nome.
 dim args17(0) as new com.sun.star.beans.PropertyValue
 args17(0).Name = "Text"
 args17(0).Value = CHR$(9)
 
 dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args17())
 
 rem (15) Premete Home per andare all'inizio della riga.
 dispatcher.executeDispatch(document, ".uno:GoToStartOfLine", "", 0, Array())
 
 rem (16) Premete Freccia giù per muovere il cursore alla riga successiva.
 dim args19(1) as new com.sun.star.beans.PropertyValue
 args19(0).Name = "Count"
 args19(0).Value = 1
 args19(1).Name = "Select"
 args19(1).Value = false
 
 dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args19())
 end sub

I movimenti del cursore vengono utilizzati per tutte le operazioni (al contrario di quanto accade nella ricerca). Se eseguite la macro nella riga contenente DONTKNOW, la parola weight viene spostata davanti alla riga e il primo “The” viene cambiato in “She”. In questo caso la macro non funziona bene, ma non dovrei eseguire la macro nelle righe che non hanno il formato appropriato: bisogna elaborarle manualmente.





Esecuzione rapida di una macro

È tedioso eseguire ripetutamente una macro facendo sempre clic su Strumenti > Macro > Esegui Macro (vedere Errore: sorgente del riferimento non trovata). Potete eseguire la macro dall'interno dell'IDE. Fate clic su Strumenti > Macro > Organizza Macro > OpenOffice.org Basic per aprire la finestra di dialogo Macro OpenOffice.org Basic. Selezionate la vostra macro e fate clic su Modifica per aprire la macro nell'IDE.

L'IDE contiene un'icona Esegui Programma Basic nella barra degli strumenti, che esegue la prima macro presente nell'IDE. Fino a quando non la cambiate, la prima macro è quella vuota denominata Main. Modificate Main in maniera tale che appaia come mostrato nel Listato 2.

Listato 2: Modifica di Main per invocare CopiaNumAllaCol1.

Sub Main
  CopiaNumAllaCol1
End Sub

Adesso, potete eseguire CopiaNumAllaCol1 facendo clic ripetutamente sull'icona Esegui Programma Basic nella barra degli strumenti dell'IDE. Questo metodo è semplice e rapido, specialmente per macro temporanee che vengono utilizzate solo poche volte e poi cancellate.










Cursor movements are used for all operations (as opposed to searching). If run on the DONTKNOW line, the word weight is moved to the front of the line, and the first “The" is changed to “She". This is not perfect, but I should not have run the macro on the lines that did not have the proper format; I need to do these manually.

Running the macro quickly

It is tedious to repeatedly run the macro using Tools > Macros > Run Macro (see Figure 3). The macro can be run from the IDE. Use Tools > Macros > Organize Macros > OpenOffice.org Basic to open the Basic Macro dialog. Select your macro and click Edit to open the macro in the IDE.

The IDE has a Run Basic icon in the toolbar that runs the first macro in the IDE. Unless you change the first macro, it is the empty macro named Main. Modify Main so that it reads as shown in Listing 3.

Listing 3: Modify Main to call CopyNumToCol1.

 Sub Main
   CopyNumToCol1
 End Sub

Now, you can run CopyNumToCol1 by repeatedly clicking the Run Basic icon in the toolbar of the IDE. This is very fast and easy, especially for temporary macros that will be used a few times and then discarded.

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