Il 29/06/2017 12:26, Renato Pontefice ha scritto:
Sono quasi giunto alla fine del mio lavoro. Mi rimane solo da:
scrivere una cosa (per esempio "ciao" in una cella)
la macro, verra poi eseguita premendo un pulsante.
Quale è la sintassi per fare questa cosa?
Nel senso:
quale codice deve contenere la macro che esegue la cosa?
Grazie
Renato
Per imparare ad usare le macro ho usato questo libro e tante ricerche su
internet:
http://www.pitonyak.org/OOME_3_0.pdfpagina 470 (473)
http://www.pitonyak.org/oo.php
e non le so ancora usare bene...
prova a registrare una macro per capire come funzionano:
(per poterlo fare bisogna attivare in Strumenti->Opzioni->Avanzate
Abilita le funzionalita' sperimentali e Abilita la registrazione di macro)
da: Strumenti->Macro->Registra_macro
fai un click sulla cella B6
scrivi prova
premi invio
sulla finestrella apparsa quando hai scelto Registra_macro fai click su
termina registrazione
appare la finestra Macro di LibreOfficeBasic
scegli registra macro in: fai click sul + del nome del file di prova che
stai usando
click sul + di standard e in basso a destra scegli nuovo_modulo
vuoi sovrascrivere la macro main rispondi si
a questo punto la macro e' registrata.
da: Strumenti->Macro->Organizza_macro->LibreOfficeBasic
scegli Module1->Modifica
qui modifichi sub Main in sub Scrivi_su_cella_corrente
sub Scrivi_su_cella_corrente
rem in realta' non scrive nella cella corrente, ma in B6 -----------------
rem define variables -----------------------------------------------------
dim document as object
dim dispatcher as object
rem get access to the document -------------------------------------------
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ---va alla cella B6 -------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$B$6"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ---scrive nella cella corrente prova ---------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "StringName"
args2(0).Value = "prova"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())
rem ---premendo invio va alla cella successiva ---------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())
end sub
Se vuoi scrivere nella cella corrente sostituisci la riga:
args1(0).Value = "$B$6"
con
args1(0).Value = ThisComponent.CurrentSelection
le righe con rem sono i commenti.
Le macro che scrivi le puoi salvare in formato testo con il pulsante
salva_basic
e le salva in formato .bas
Per abbinarla ad un pulsante della barra standard nel file stesso
Strumenti->Personalizza->Barre_degli_strumenti->standard
Aggiungi
in Sezione scendi fino a LibreOffice-Macro click su + e su Standard e su
Module1
in Comandi scegli Scrivi_su_cella_corrente
e ti appare Scrivi_su_cella_corrente sulla barra degli strumenti standard.
se vuoi puoi usare un'icona sempre da personalizza->barra_strumenti
scegli la nuova voce aggiunta poi cambia->cambia_icona
Spero di aver capito cosa avevi bisogno.
Scusa se ti ho mandato una mail con spiegazione passo passo,
ma non sapevo come conoscevi LibreOffice.
ciao
Beppe
--
le nuvole non hanno regole,
perchè non hanno mai rinunciato
alla libertà di sognare.
--
Come cancellarsi: E-mail [email protected]
Problemi? http://it.libreoffice.org/supporto/mailing-lists/come-cancellarsi/
Linee guida per postare + altro:
http://wiki.documentfoundation.org/Local_Mailing_Lists/it
Archivio della lista: http://listarchives.libreoffice.org/it/users/
Tutti i messaggi inviati a questa lista vengono archiviati pubblicamente e non
sono eliminabili