[Risolto]Eventi foglio per tutti i fogli
[Risolto]Eventi foglio per tutti i fogli
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, 11:37, modificato 1 volta in totale.
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Re: Eventi foglio per tutti i fogli
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 137 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
Re: Eventi foglio per tutti i fogli
Ottimo funziona benissimo, ma dove le trovi queste soluzioni ?
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Re: Eventi foglio per tutti i fogli
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
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
e da lì basta creare la struttura tramite
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
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
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
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"
Codice: Seleziona tutto
Dim PropoEv(1) As New com.sun.star.beans.PropertyValue
Prova a fare tutti i passaggi che ti ho elencato
Ciao
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
Re: Eventi foglio per tutti i fogli
Grazie, ma io sono già bloccato alla prima, come si fa ?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
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Re: Eventi foglio per tutti i fogli
O tramite Proprietà di debug quindi in questo modo
oppure il miglior modo è usare Xray
Codice: Seleziona tutto
msgbox ThisComponent.sheets(0).DBG_methods
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
Re: Eventi foglio per tutti i fogli
ok, ho fatto così
Grazie di tutto
Codice: Seleziona tutto
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
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta