[it-users] macro per nascondere fogli in calc

classic Classic list List threaded Threaded
9 messages Options
ARatti ARatti
Reply | Threaded
Open this post in threaded view
|

[it-users] macro per nascondere fogli in calc

Ho creato delle macro per visualizzare  e nascondere dei fogli in calc,
la macro che uso (da OOo) è la seguente:

sub NASCONDI
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "aTableName"
args1(0).Value = "FOLGIO1"
dispatcher.executeDispatch(document, ".uno:Hide", "", 0, args1())
end sub

Ma non funzione in modo corretto, più precisamente nasconde il foglio
selezionato, e non il foglio indicato con args1(0).Value
La stessa macro usata per mostra i foglio (al posto di ".uno:Hide" c'è
".uno:Show") funziona.
Qualche suggerimento
Grazie
Ambrogio Ratti

--
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

ARatti ARatti
Reply | Threaded
Open this post in threaded view
|

Re: [it-users] macro per nascondere fogli in calc

Il 06/12/2015 19:09, ARatti ha scritto:

> Ho creato delle macro per visualizzare  e nascondere dei fogli in
> calc, la macro che uso (da OOo) è la seguente:
>
> sub NASCONDI
> rem
> ----------------------------------------------------------------------
> rem define variables
> dim document   as object
> dim dispatcher as object
> rem
> ----------------------------------------------------------------------
> rem get access to the document
> document   = ThisComponent.CurrentController.Frame
> dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
> rem
> ----------------------------------------------------------------------
> dim args1(0) as new com.sun.star.beans.PropertyValue
> args1(0).Name = "aTableName"
> args1(0).Value = "FOLGIO1"
> dispatcher.executeDispatch(document, ".uno:Hide", "", 0, args1())
> end sub
>
> Ma non funzione in modo corretto, più precisamente nasconde il foglio
> selezionato, e non il foglio indicato con args1(0).Value
> La stessa macro usata per mostra i foglio (al posto di ".uno:Hide" c'è
> ".uno:Show") funziona.
> Qualche suggerimento
> Grazie
> Ambrogio Ratti
>
Scusate, uso
LibreOffice Versione: 5.0.2.2
OS Debian testing

Ambrogio

--
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

Giuseppe Vizziello Giuseppe Vizziello
Reply | Threaded
Open this post in threaded view
|

Re: [it-users] macro per nascondere fogli in calc

In reply to this post by ARatti
Ciao,
guarda... è molto più semplice. La macro che usi sembra generata dal
registratore di macro. Non è detto che il registratore faccia nel
migliore dei modi. Anche io lo uso, ma è solo l'ultima spiaggia.

Vengo al dunque:

Sub NASCONDI
        ThisComponent.Sheets.getByName("Foglio1").isVisible = FALSE
End Sub

Questo è tutto.
Naturalmente non funziona se Foglio1 è l'unico foglio che hai.

Puoi anche parametrizzare in questa maniera:

Sub NASCONDI (sFoglio as String)
        ThisComponent.Sheets.getByName(sFoglio).isVisible = FALSE
End Sub

Quindi usarla così:

Sub ciccio
        NASCONDI ("Nome del foglio da nascondere")
End Sub

Ma per una Sub così corta non ne vale la pena.

Giuseppe

On 06/12/2015 19.09, ARatti wrote:

> Ho creato delle macro per visualizzare  e nascondere dei fogli in calc,
> la macro che uso (da OOo) è la seguente:
>
> sub NASCONDI
> rem ----------------------------------------------------------------------
> rem define variables
> dim document   as object
> dim dispatcher as object
> rem ----------------------------------------------------------------------
> rem get access to the document
> document   = ThisComponent.CurrentController.Frame
> dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
> rem ----------------------------------------------------------------------
> dim args1(0) as new com.sun.star.beans.PropertyValue
> args1(0).Name = "aTableName"
> args1(0).Value = "FOLGIO1"
> dispatcher.executeDispatch(document, ".uno:Hide", "", 0, args1())
> end sub
>
> Ma non funzione in modo corretto, più precisamente nasconde il foglio
> selezionato, e non il foglio indicato con args1(0).Value
> La stessa macro usata per mostra i foglio (al posto di ".uno:Hide" c'è
> ".uno:Show") funziona.
> Qualche suggerimento
> Grazie
> Ambrogio Ratti
>


--
Giuseppe Vizziello - Associazione LibreItalia
mob: +393282009610
http://www.giuSerpe.it - skype: giuserpe
http://leeno.org
LeenO - computo metrico assistito su LibreOffice
G+:https://plus.google.com/communities/115347226088179821692

--
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

Ferrari Renato Maria Ferrari Renato Maria
Reply | Threaded
Open this post in threaded view
|

Re: [it-users] macro per nascondere fogli in calc

In reply to this post by ARatti
Il 06/12/2015 19:09, ARatti ha scritto:

> Ho creato delle macro per visualizzare  e nascondere dei fogli in
> calc, la macro che uso (da OOo) è la seguente:
>
> sub NASCONDI
> rem
> ----------------------------------------------------------------------
> rem define variables
> dim document   as object
> dim dispatcher as object
> rem
> ----------------------------------------------------------------------
> rem get access to the document
> document   = ThisComponent.CurrentController.Frame
> dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
> rem
> ----------------------------------------------------------------------
> dim args1(0) as new com.sun.star.beans.PropertyValue
> args1(0).Name = "aTableName"
> args1(0).Value = "FOLGIO1"
> dispatcher.executeDispatch(document, ".uno:Hide", "", 0, args1())
> end sub
>
> Ma non funzione in modo corretto, più precisamente nasconde il foglio
> selezionato, e non il foglio indicato con args1(0).Value
> La stessa macro usata per mostra i foglio (al posto di ".uno:Hide" c'è
> ".uno:Show") funziona.
> Qualche suggerimento
> Grazie
> Ambrogio Ratti
>

Prova con:
     documento = StarDesktop.CurrentComponent
     foglio = documento.Sheets(nfoglio)
     foglio.IsVisible = false

o, se vuoi semplificare:
documento.Sheets(nfoglio).IsVisible = false

dove nfoglio è il numero indice del foglio, partendo da 0 (quindi, un
numero in meno di quello che ti fa' vedere LibreOffice

Se vuoi, posso mandarti in privato il documento o una serie di documenti
o di estensioni ricche di macro sui fogli elettronici tratti dalla rete.
(La maggior parte per OpenOffice 1.0, ma il linguaggio basic non è
cambiato).

--

Ferrari Renato Maria
Linux Registered User #219791
Linux Registered Machine #104061
[hidden email]


--
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

ARatti ARatti
Reply | Threaded
Open this post in threaded view
|

Re: [it-users] macro per nascondere fogli in calc

In reply to this post by ARatti
Il 06/12/2015 22:34, nicola ha scritto:
> Ciao, un osservazione banale, io non mi intendo di basic, ho notato
> che args1 punta a: "FOLGIO1" non è che dovevi scrivere "FOGLIO1"?
> Nicola
>
Non è questo il problema, ho scritto "FOLGIO1" ma in realtà io ho
rinominato i fogli con nomi diversi (poteva essere anche PIPPO), in quel
valore c'è il nome del foglio che voglio nascondere o visualizzare.

Ambrogio

--
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

ARatti ARatti
Reply | Threaded
Open this post in threaded view
|

Re: [it-users] macro per nascondere fogli in calc

In reply to this post by Giuseppe Vizziello

Il 07/12/2015 09:18, Giuseppe Vizziello ha scritto:
> Ciao,
> guarda... è molto più semplice. La macro che usi sembra generata dal
> registratore di macro.
Esatto

> Vengo al dunque:
>
> Sub NASCONDI
> ThisComponent.Sheets.getByName("Foglio1").isVisible = FALSE
> End Sub
Questa va benissimo, visto che ci sono ne approfitto, uso la stessa
funzione per saltare al foglio che mi interessa usando:
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args1())
c'è un modo più semplice, come sopra?

Grazie
Ambrogio


--
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

Giuseppe Vizziello Giuseppe Vizziello
Reply | Threaded
Open this post in threaded view
|

Re: [it-users] macro per nascondere fogli in calc

Io uso così:

*If thisComponent.Sheets.hasByName("COMPUTO") Then* /'verifico
l'esistenza del foglio "//*COMPUTO" *e procedo, altrimenti non succede
niente/
    *oSheet = ThisComponent.Sheets.getByName("COMPUTO")* /'definisco il
nome del foglio/
    *ThisComponent.CurrentController.Select(oSheet)* /'lo seleziono,
quindi evidenzio/
   
*ThisComponent.currentController.Select(ThisComponent.CreateInstance("com.sun.star.sheet.SheetCellRanges"))
*/'annullo la selezione, ma rimane evidenziato
/*EndIf*/
/
Uso a fatica "executeDispatch()", ma è solo un'abitudine.

Ciao

On 07/12/2015 18.02, ARatti wrote:

>
> Il 07/12/2015 09:18, Giuseppe Vizziello ha scritto:
>> Ciao,
>> guarda... è molto più semplice. La macro che usi sembra generata dal
>> registratore di macro.
> Esatto
>
>> Vengo al dunque:
>>
>> Sub NASCONDI
>>     ThisComponent.Sheets.getByName("Foglio1").isVisible = FALSE
>> End Sub
> Questa va benissimo, visto che ci sono ne approfitto, uso la stessa
> funzione per saltare al foglio che mi interessa usando:
> dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args1())
> c'è un modo più semplice, come sopra?
>
> Grazie
> Ambrogio
>
>


--
Giuseppe Vizziello - Associazione LibreItalia
mob: +393282009610
http://www.giuSerpe.it - skype: giuserpe
http://leeno.org
LeenO - computo metrico assistito su LibreOffice
G+:https://plus.google.com/communities/115347226088179821692


--
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

Giuseppe Vizziello Giuseppe Vizziello
Reply | Threaded
Open this post in threaded view
|

Re: [it-users] macro per nascondere fogli in calc

In reply to this post by ARatti
Scusa... reinvio per un dubbio sulla formattazione.

Io uso così:

If thisComponent.Sheets.hasByName("COMPUTO") Then '[1]
    oSheet = ThisComponent.Sheets.getByName("COMPUTO") '[2]
    ThisComponent.CurrentController.Select(oSheet) '[3]
        ThisComponent.currentController.Select(ThisComponent.CreateInstance("com.sun.star.sheet.SheetCellRanges"))'[4]
EndIf

[1]: verifico l'esistenza del foglio "COMPUTO" e procedo, altrimenti non
succede niente
[2]: definisco il nome del foglio
[3]: lo seleziono, quindi evidenzio
[4]: annullo la selezione, ma rimane evidenziato


Uso a fatica "executeDispatch()", ma è solo un'abitudine.
In questo caso forse è più lunga, ma la trovo più facile da capire

Ciao


On 07/12/2015 18.02, ARatti wrote:

>
> Il 07/12/2015 09:18, Giuseppe Vizziello ha scritto:
>> Ciao,
>> guarda... è molto più semplice. La macro che usi sembra generata dal
>> registratore di macro.
> Esatto
>
>> Vengo al dunque:
>>
>> Sub NASCONDI
>>     ThisComponent.Sheets.getByName("Foglio1").isVisible = FALSE
>> End Sub
> Questa va benissimo, visto che ci sono ne approfitto, uso la stessa
> funzione per saltare al foglio che mi interessa usando:
> dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args1())
> c'è un modo più semplice, come sopra?
>
> Grazie
> Ambrogio
>
>


--
Giuseppe Vizziello - Associazione LibreItalia
mob: +393282009610
http://www.giuSerpe.it - skype: giuserpe
http://leeno.org
LeenO - computo metrico assistito su LibreOffice
G+:https://plus.google.com/communities/115347226088179821692

--
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

ARatti ARatti
Reply | Threaded
Open this post in threaded view
|

Re: [it-users] macro per nascondere fogli in calc


Il 07/12/2015 18:27, Giuseppe Vizziello ha scritto:

> If thisComponent.Sheets.hasByName("COMPUTO") Then '[1]
>      oSheet = ThisComponent.Sheets.getByName("COMPUTO") '[2]
>      ThisComponent.CurrentController.Select(oSheet) '[3]
> ThisComponent.currentController.Select(ThisComponent.CreateInstance("com.sun.star.sheet.SheetCellRanges"))'[4]
> EndIf
>
> [1]: verifico l'esistenza del foglio "COMPUTO" e procedo, altrimenti non
> succede niente
> [2]: definisco il nome del foglio
> [3]: lo seleziono, quindi evidenzio
> [4]: annullo la selezione, ma rimane evidenziato
>
>
> Uso a fatica "executeDispatch()", ma è solo un'abitudine.
> In questo caso forse è più lunga, ma la trovo più facile da capire
>
Ok, funziona ed è meglio dell'altra, perché con ".executeDispatch()" mi
funziona solamente usando il numero del foglio e non il nome.

Grazie
Ambrogio


--
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