[it-users] scrivere una parola in una cella

classic Classic list List threaded Threaded
7 messages Options
Renato Pontefice Renato Pontefice
Reply | Threaded
Open this post in threaded view
|

[it-users] scrivere una parola in una cella

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

--
Come cancellarsi: E-mail [hidden email]
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
beppe beppe
Reply | Threaded
Open this post in threaded view
|

Re: [it-users] scrivere una parola in una cella

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 [hidden email]
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
Giovanni Giovanni
Reply | Threaded
Open this post in threaded view
|

Re: [it-users] scrivere una parola in una cella

Beppe, sei un tutorial umano! Grazie mille, questa tua mail è davvero
preziosa :)

Il ven 30 giu 2017, 00:03 beppe <[hidden email]> ha scritto:

> 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 [hidden email]
> 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
>

--
Come cancellarsi: E-mail [hidden email]
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
Renato Pontefice Renato Pontefice
Reply | Threaded
Open this post in threaded view
|

Re: [it-users] scrivere una parola in una cella

Ciao Beppe,
non sai quanto bene mi ha fatto la tua mail che spiega passo passo.
Ho realizzato (in questi giorni) gran parte di quello che volevo fare
(creato una macro, assegnata ad un tasto, scrive un paio dicose) e tutto
funziona.
La cosa che mi è rimasta (credo sia una mera istruzione che però non
conosco) è:
alla fine del compito (scivere nella cella in cui mi trovo un termine o l'
orario)
vorrei che il focus sia nella cella adiacente (cioè stessa riga, ma colonna
+1)
al momento queste istruzioni
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$D$11"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())

dicono di spostarsi sempre alla cella D11

invece come posso dirgli:
spostati nella stessa riga,ma di una colonna in più

Mi sono spiegato?

Grazie ancora

Renato

Il giorno ven 30 giu 2017 alle ore 00:47 Giovanni <
[hidden email]> ha scritto:

> Beppe, sei un tutorial umano! Grazie mille, questa tua mail è davvero
> preziosa :)
>
> Il ven 30 giu 2017, 00:03 beppe <[hidden email]> ha scritto:
>
>> 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 [hidden email]
>> 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
>>
>

--
Come cancellarsi: E-mail [hidden email]
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
beppe beppe
Reply | Threaded
Open this post in threaded view
|

Re: [it-users] scrivere una parola in una cella

Il 03/07/2017 11:50, Renato Pontefice ha scritto:

> Ciao Beppe,
> ...
> alla fine del compito (scivere nella cella in cui mi trovo un termine
> o l' orario)
> vorrei che il focus sia nella cella adiacente (cioè stessa riga, ma
> colonna +1)
> al momento queste istruzioni
> rem ----------------------------------------------------------------------
> dim args2(0) as new com.sun.star.beans.PropertyValue
> args2(0).Name = "ToPoint"
> args2(0).Value = "$D$11"
>
> dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
>
> dicono di spostarsi sempre alla cella D11
>
> invece come posso dirgli:
> spostati nella stessa riga,ma di una colonna in più
>
> Mi sono spiegato?
>
> Grazie ancora
>
> Renato
>
Come prima cosa dobbiamo acquisire il valore della cella corrente:

|Sub Cella_attiva
   Dim colonna,riga,cella,valore
   rem data + orario corrente
   valore=Now()
   rem data corrente
   rem valore=date
   rem valore numerico
   rem valore=15
   colonna = ThisComponent.getCurrentSelection.CellAddress.Column
   riga    = ThisComponent.getCurrentSelection.CellAddress.Row
   print "cella corrente - colonna: "+colonna, " - riga: "+riga
   ThisComponent.Sheets.getByIndex( 0 ).GetCellByPosition( colonna+1,
riga ).SetValue(valore)
   Print "scritto in: "+ chr(65+colonna+1) + (riga+1) + " valore: " + valore
End Sub

le righe con print le puoi commentare con rem e non si stampano
la cella A1 e' la colonna=0 e la riga=0

le  celle nelle quali vuoi inserire la data o l'ora prima formattale
come data o come orario

qui c'e' tutta la documentazione che pero' non so sfruttare:
http://api.libreoffice.org/docs/idl/ref/servicecom_1_1sun_1_1star_1_1sheet_1_1Spreadsheet.html
http://api.libreoffice.org/docs/idl/ref/namespacecom_1_1sun_1_1star.html

|ciao
Beppe

--
le nuvole non hanno regole,
perchè non hanno mai rinunciato
alla libertà di sognare.


--
Come cancellarsi: E-mail [hidden email]
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
Renato Pontefice Renato Pontefice
Reply | Threaded
Open this post in threaded view
|

Re: [it-users] scrivere una parola in una cella

Ciao,
fenomeni dell' informatica.
____________________STAVO SCRIVENDO QUESTO
Ciao,
non pensare che non c' ho provato. c' ho provato e molto.
All' esecuzione della Macro, ottengo l' errore:
_______________________
sono tornato sulla macro per copiare l' errore e potertelo spedire. Invece
tutto funziona.
Dire che sono sorpreso...è un eufemismo...perchè sono incavolato! C' ho
messo fino alle 11 per capire quale fosse il problema...
Ma ora sono felice :-)
tutto funziona
ho asegnato le varie macro a tasti funzione (che poi è la ragione del fare
una macro)
eposso così iniziare a compilare il mio foglio.
Mi rimane solo un ultima cosa:
una volta eseguita una macro, posso spostare il focus dall' attuale Colonna
(credo .cellAddress.Column) a .cellAddress.Column + 1?
Questa è una "rifinitura" :-)

Grazie ancora

Renato

Il giorno mer 5 lug 2017 alle ore 00:58 beppe <[hidden email]> ha scritto:

> Il 03/07/2017 11:50, Renato Pontefice ha scritto:
>
> Ciao Beppe,
> ...
>
> alla fine del compito (scivere nella cella in cui mi trovo un termine o l'
> orario)
>
> vorrei che il focus sia nella cella adiacente (cioè stessa riga, ma
> colonna +1)
>
> al momento queste istruzioni
> rem ----------------------------------------------------------------------
> dim args2(0) as new com.sun.star.beans.PropertyValue
> args2(0).Name = "ToPoint"
> args2(0).Value = "$D$11"
>
> dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
>
> dicono di spostarsi sempre alla cella D11
>
> invece come posso dirgli:
>
> spostati nella stessa riga,ma di una colonna in più
>
> Mi sono spiegato?
>
> Grazie ancora
>
> Renato
>
> Come prima cosa dobbiamo acquisire il valore della cella corrente:
>
> Sub Cella_attiva
>   Dim colonna,riga,cella,valore
>   rem data + orario corrente
>   valore=Now()
>   rem data corrente
>   rem valore=date
>   rem valore numerico
>   rem valore=15
>   colonna = ThisComponent.getCurrentSelection.CellAddress.Column
>   riga    = ThisComponent.getCurrentSelection.CellAddress.Row
>   print "cella corrente - colonna: "+colonna, " - riga: "+riga
>   ThisComponent.Sheets.getByIndex( 0 ).GetCellByPosition( colonna+1, riga
> ).SetValue(valore)
>   Print "scritto in: "+ chr(65+colonna+1) + (riga+1) + " valore: " + valore
> End Sub
>
> le righe con print le puoi commentare con rem e non si stampano
> la cella A1 e' la colonna=0 e la riga=0
>
> le  celle nelle quali vuoi inserire la data o l'ora prima formattale come
> data o come orario
>
> qui c'e' tutta la documentazione che pero' non so sfruttare:
>
> http://api.libreoffice.org/docs/idl/ref/servicecom_1_1sun_1_1star_1_1sheet_1_1Spreadsheet.html
> http://api.libreoffice.org/docs/idl/ref/namespacecom_1_1sun_1_1star.html
>
> ciao
> Beppe
>
> --
> le nuvole non hanno regole,
> perchè non hanno mai rinunciato
> alla libertà di sognare.
>
>

--
Come cancellarsi: E-mail [hidden email]
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
beppe beppe
Reply | Threaded
Open this post in threaded view
|

Re: [it-users] scrivere una parola in una cella


> Il giorno mer 5 lug 2017 alle ore 00:58 beppe <[hidden email]> ha scritto:
>
>> Il 03/07/2017 11:50, Renato Pontefice ha scritto:
>>
>> Ciao Beppe,
>> ...
>>
>> alla fine del compito (scivere nella cella in cui mi trovo un termine o l'
>> orario)
>>
>> vorrei che il focus sia nella cella adiacente (cioè stessa riga, ma
>> colonna +1)
>>
>> al momento queste istruzioni
>> rem ----------------------------------------------------------------------
>> dim args2(0) as new com.sun.star.beans.PropertyValue
>> args2(0).Name = "ToPoint"
>> args2(0).Value = "$D$11"
>>
>> dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
>>
>> dicono di spostarsi sempre alla cella D11
>>
>> invece come posso dirgli:
>>
>> spostati nella stessa riga,ma di una colonna in più
>>
>> Mi sono spiegato?
>>
>> Grazie ancora
>>
>> Renato
>>
>> Come prima cosa dobbiamo acquisire il valore della cella corrente:
>>
>> Sub Cella_attiva
>>    Dim colonna,riga,cella,valore
>>    rem data + orario corrente
>>    valore=Now()
>>    rem data corrente
>>    rem valore=date
>>    rem valore numerico
>>    rem valore=15
>>    colonna = ThisComponent.getCurrentSelection.CellAddress.Column
>>    riga    = ThisComponent.getCurrentSelection.CellAddress.Row
>>    print "cella corrente - colonna: "+colonna, " - riga: "+riga
>>    ThisComponent.Sheets.getByIndex( 0 ).GetCellByPosition( colonna+1, riga
>> ).SetValue(valore)
>>    Print "scritto in: "+ chr(65+colonna+1) + (riga+1) + " valore: " + valore
>> End Sub
>>
>> le righe con print le puoi commentare con rem e non si stampano
>> la cella A1 e' la colonna=0 e la riga=0
>>
>> le  celle nelle quali vuoi inserire la data o l'ora prima formattale come
>> data o come orario
>>
>> qui c'e' tutta la documentazione che pero' non so sfruttare:
>>
>> http://api.libreoffice.org/docs/idl/ref/servicecom_1_1sun_1_1star_1_1sheet_1_1Spreadsheet.html
>> http://api.libreoffice.org/docs/idl/ref/namespacecom_1_1sun_1_1star.html
>>
>> ciao
>> Beppe

Il 05/07/2017 11:08, Renato Pontefice ha scritto:

> Ciao,
> fenomeni dell' informatica.
> ____________________STAVO SCRIVENDO QUESTO
> Ciao,
> non pensare che non c' ho provato. c' ho provato e molto.
> All' esecuzione della Macro, ottengo l' errore:
> _______________________
> sono tornato sulla macro per copiare l' errore e potertelo spedire. Invece
> tutto funziona.
> Dire che sono sorpreso...è un eufemismo...perchè sono incavolato! C' ho
> messo fino alle 11 per capire quale fosse il problema...
> Ma ora sono felice :-)
> tutto funziona
> ho asegnato le varie macro a tasti funzione (che poi è la ragione del fare
> una macro)
> eposso così iniziare a compilare il mio foglio.
> Mi rimane solo un ultima cosa:
> una volta eseguita una macro, posso spostare il focus dall' attuale Colonna
> (credo .cellAddress.Column) a .cellAddress.Column + 1?
> Questa è una "rifinitura" :-)
>
> Grazie ancora
>
> Renato

Sub Cella_attiva
   rem definire le variabili
   dim document   as Object
   dim dispatcher as object
   Dim colonna,riga,cella,valore
   dim args1(0) as new com.sun.star.beans.PropertyValue

   rem data + orario corrente
   valore=Now()

   colonna = ThisComponent.getCurrentSelection.CellAddress.Column
   riga    = ThisComponent.getCurrentSelection.CellAddress.Row
   ThisComponent.Sheets.getByIndex( 0 ).GetCellByPosition( colonna+1,
riga ).SetValue(valore)

   rem adesso ti posizioni nella cella che vuoi tu modificando i valori
colonna e riga
   rem non sapendo con quale funzione spostarsi in una determinata cella
   rem ho usato il registratore automatico di macro e
   rem ho cambiato il valore della cella con le variabili colonna e riga

   document   = ThisComponent.CurrentController.Frame
   dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
   args1(0).Name = "ToPoint"
   args1(0).Value = chr(36) + chr(65+colonna+1) + chr(36) + (riga+1)
   dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
end Sub

non so se i due simboli del $ chr(36) nella variabile servano o meno,
si posiziona comunque dove hai scritto il valore tempo

ciao
Beppe

--
le nuvole non hanno regole,
perchè non hanno mai rinunciato
alla libertà di sognare.


--
Come cancellarsi: E-mail [hidden email]
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