Pannello di Controllo Moderatore ]

[Risolto]Eventi foglio per tutti i fogli

Discussioni sull'applicazione per i fogli di calcolo

[Risolto]Eventi foglio per tutti i fogli

Messaggioda patel » sabato 19 novembre 2016, 10:48

In un documento di calc con molti fogli è possibile assegnare in un colpo solo la stessa macro evento a tutti i fogli ?
Ultima modifica di patel il sabato 19 novembre 2016, 12:37, modificato 1 volta in totale.
-------------------
OpenOffice 4.1 e Libre Office 6.4.1.2 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 3645
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Eventi foglio per tutti i fogli

Messaggioda Gaetanopr » sabato 19 novembre 2016, 11:09

si può fare sia tramite un listener che tramite l'assegnazione diretta all'evento sul foglio, a quale sei interessato ? credo la seconda
Allegati
Eventi_Tutti_Fogli.ods
(8.77 KiB) Scaricato 51 volte
Openoffice 4.1 su windows xp
Gaetanopr
Volontario
Volontario
 
Messaggi: 2903
Iscritto il: mercoledì 21 novembre 2012, 21:07

Re: Eventi foglio per tutti i fogli

Messaggioda patel » sabato 19 novembre 2016, 11:37

Ottimo funziona benissimo, ma dove le trovi queste soluzioni ?
-------------------
OpenOffice 4.1 e Libre Office 6.4.1.2 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 3645
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Eventi foglio per tutti i fogli

Messaggioda Gaetanopr » sabato 19 novembre 2016, 11:46

Ti spiego come ho fatto
1) ho ricercato tra i metodi del foglio dove già avevo inserito un evento e ho trovato il metodo getEvents
2) ho fatto Sh.getEvents.getElementNames per ricercare il nome esatto di ogni singolo evento assegnabile ai fogli e mi è uscita la seguente lista
Codice: Seleziona tutto   Espandi visualeStringi visuale
Array : T( 0 To 6 ) As string 

(0)       | string : "OnFocus"
(1)       | string : "OnUnfocus"
(2)       | string : "OnSelect"
(3)       | string : "OnDoubleClick"
(4)       | string : "OnRightClick"
(5)       | string : "OnChange"
(6)       | string : "OnCalculate


3) quindi ho ricercato l'evento OnChange facendo Sh.getEvents.getByname("OnChange) per capire come si struttura
4) E' venuta fuori la seguente struttura dati
Codice: Seleziona tutto   Espandi visualeStringi visuale
      Array : T( 0 To 1 ) As object 

(0)       | Structure : com.sun.star.beans.PropertyValue --> EventType                   "Script"
(1)       | Structure : com.sun.star.beans.PropertyValue --> Script                      "vnd.sun.star.script:Standard.Module1.Ciao?language=Basic&location=document"


e da lì basta creare la struttura tramite
Codice: Seleziona tutto   Espandi visualeStringi visuale
Dim PropoEv(1) As New com.sun.star.beans.PropertyValue


Se sai creare una struttura dati(piano piano sto imparando) puoi fare molte cose è solo questione di sapere dove cercare.

Prova a fare tutti i passaggi che ti ho elencato
Ciao
Openoffice 4.1 su windows xp
Gaetanopr
Volontario
Volontario
 
Messaggi: 2903
Iscritto il: mercoledì 21 novembre 2012, 21:07

Re: Eventi foglio per tutti i fogli

Messaggioda patel » sabato 19 novembre 2016, 12:04

Gaetanopr ha scritto:Ti spiego come ho fatto
1) ho ricercato tra i metodi del foglio dove già avevo inserito un evento e ho trovato il metodo getEvents
Grazie, ma io sono già bloccato alla prima, come si fa ?
-------------------
OpenOffice 4.1 e Libre Office 6.4.1.2 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 3645
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Eventi foglio per tutti i fogli

Messaggioda Gaetanopr » sabato 19 novembre 2016, 12:12

O tramite Proprietà di debug quindi in questo modo
Codice: Seleziona tutto   Espandi visualeStringi visuale
msgbox ThisComponent.sheets(0).DBG_methods

oppure il miglior modo è usare Xray
Openoffice 4.1 su windows xp
Gaetanopr
Volontario
Volontario
 
Messaggi: 2903
Iscritto il: mercoledì 21 novembre 2012, 21:07

Re: Eventi foglio per tutti i fogli

Messaggioda patel » sabato 19 novembre 2016, 12:36

ok, ho fatto così
Codice: Seleziona tutto   Espandi visualeStringi visuale
Sub metodi
Dim  strArr() As String
Doc = ThisComponent
Sheet = Doc.Sheets(0)
s= Sheet.DBG_methods
strArr = Split(s,";")
For count = 0 To ubound(strArr) ' dimensione array
   Sheet.getCellByPosition(0, count).string = strArr(count)
Next
End Sub

Grazie di tutto
-------------------
OpenOffice 4.1 e Libre Office 6.4.1.2 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 3645
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno


Torna a Calc

Chi c’è in linea

Visitano il forum: Nessuno e 10 ospiti