[Risolto] Macro per selezionare + tabelle contemporaneamente
[Risolto] Macro per selezionare + tabelle contemporaneamente
Buongiorno,
mi sono appena iscritto a questo forum, per cerare qualcuno che possa aiutarmi a risolvere una situazione che mi capita spesso usando il programma writer per lavoro. Ho provato a cercare la soluzione in internet, ma senza successo.
Il mio problema è questo; ho un file di testo scritto in write che contiene al suo interno numerose tabelle. Avrei la necessità di selezionare contemporaneamente le tabelle da pag. X a pag. y per poi effettuare su di esse una serie di formattazioni comuni (es. cambiare il colore di sfondo, applicare un bordo, ecc..).
Mi spiego meglio. Quello che mi servirebbe è una macro che si limiti a selezionare un gruppo di tabelle contenute in un determinato intervallo di pagine. Fatto questo, la mia intenzione, se possibile, è quella di cliccare sul tasto "Proprietà tabelle" e da li cambiare a tutte le tabelle selezionate il tipo di formattazione che, di volta in volta, mi serve. Una volta potrebbe servirmi di cambiare a tutte lo sfondo, un'altra volta il contorno o un'altra ancora entrambe le cose assieme e così via. Sto chiedendo troppo? io purtroppo non ho nessuna conoscenza di macro e di programmazione e di conseguenza non conosco potenzialità e limiti di questi strumenti.
Grazie a tutti e buona giornata.
mi sono appena iscritto a questo forum, per cerare qualcuno che possa aiutarmi a risolvere una situazione che mi capita spesso usando il programma writer per lavoro. Ho provato a cercare la soluzione in internet, ma senza successo.
Il mio problema è questo; ho un file di testo scritto in write che contiene al suo interno numerose tabelle. Avrei la necessità di selezionare contemporaneamente le tabelle da pag. X a pag. y per poi effettuare su di esse una serie di formattazioni comuni (es. cambiare il colore di sfondo, applicare un bordo, ecc..).
Mi spiego meglio. Quello che mi servirebbe è una macro che si limiti a selezionare un gruppo di tabelle contenute in un determinato intervallo di pagine. Fatto questo, la mia intenzione, se possibile, è quella di cliccare sul tasto "Proprietà tabelle" e da li cambiare a tutte le tabelle selezionate il tipo di formattazione che, di volta in volta, mi serve. Una volta potrebbe servirmi di cambiare a tutte lo sfondo, un'altra volta il contorno o un'altra ancora entrambe le cose assieme e così via. Sto chiedendo troppo? io purtroppo non ho nessuna conoscenza di macro e di programmazione e di conseguenza non conosco potenzialità e limiti di questi strumenti.
Grazie a tutti e buona giornata.
Ultima modifica di charlie il martedì 10 febbraio 2015, 10:12, modificato 3 volte in totale.
Motivazione: Inserito segno di spunta verde
Motivazione: Inserito segno di spunta verde
LibreOffice portable V. 6.3.3.2 (x86), su Windows 10
Re: Selezionare più tabelle contemporaneamente
Ciao,Il problema principale per chi pensa di dare aiuto è quello di dover ricostruire le condizioni in cui si trova chi chiede aiuto. Se alleghi il tuo file, sarà più facile per tutti.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Selezionare più tabelle contemporaneamente
Provvedo subito!
Quello che allego è un file a cui ho tolto le parti non significative. In esso ci sono numerose tabelle. Supponiamo che io voglia dare uno sfondo giallo e un bordo più spesso a tutte le tabelle che vanno da pag. 3 a pag. 52. Esiste la possibilità di creare una macro che me le selezioni tutte per poi cliccare sul "Proprietà tabella" e da li applicare a tutte contemporaneamente le formattazioni che di volta in volta mi servono?
Ancora, grazie. Ciao.
Quello che allego è un file a cui ho tolto le parti non significative. In esso ci sono numerose tabelle. Supponiamo che io voglia dare uno sfondo giallo e un bordo più spesso a tutte le tabelle che vanno da pag. 3 a pag. 52. Esiste la possibilità di creare una macro che me le selezioni tutte per poi cliccare sul "Proprietà tabella" e da li applicare a tutte contemporaneamente le formattazioni che di volta in volta mi servono?
Ancora, grazie. Ciao.
- Allegati
-
- 00-PSC-ROCCA DI ROMANENGO E CASCINETTA.odt
- (67.56 KiB) Scaricato 378 volte
LibreOffice portable V. 6.3.3.2 (x86), su Windows 10
Re: Selezionare più tabelle contemporaneamente
Ciao, vedo che nessuno risponde. Prova a modificare il titolo con: Macro per ... Potresti attirare maggiormente l'attenzione di chi si intende di macro.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Macro per selezionare più tabelle contemporaneamente
Ok, ci provo.
Grazie.
Grazie.
LibreOffice portable V. 6.3.3.2 (x86), su Windows 10
Re: Macro per selezionare più tabelle contemporaneamente
Scrivo solo per comunicare che ci sto lavorando su nei miei ritagli di tempo, ma la selezione multipla delle tabelle mi sta dando dei problemi. Appena concludo qualcosa di utile mi rifarò vivo
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Re: Macro per selezionare più tabelle contemporaneamente
Sei veramente molto gentile. Grazie mille!
LibreOffice portable V. 6.3.3.2 (x86), su Windows 10
Re: Macro per selezionare più tabelle contemporaneamente
Eccomi di nuovo qui
Cercare di selezionare un certo numero di tabelle per poi aprire il menu contestuale con il tasto destro è una strada non percorribile. Anche con le macro si può selezionare solo una tabella alla volta.
Ho quindi cambiato strategia e cercato di fare una macro che ti possa servire.
Espongo la strategia scelta e il funzionamento della macro:
1-Personalizzi una tabella, per esempio la prima di pagina 6, che è una 2x4 (bordi e sfondi cella). Tale tabella sarà il modello che la macro userà per personalizzare altre tabelle.
2-Una volta fatte le modifiche volute, avvi la macro (che ho chiamato "Test"). Tale macro ti chiede di inserire 3 informazioni:
I-il nome della tabella da prendere come riferimento (il nome lo leggi sulla barra inferiore quando porti il cursore all'interno della tabella) II-il numero di pagina in cui iniziare a cercare le tabelle da modificare
III-il numero dell'ultima pagina su cui cercare le tabelle da modificare
3-la macro, una volta ottenuti questi tre dati, applica i bordi della tabella di riferimento a tutte le tabelle presenti nell'intervallo individuato dalle pagine che hai indicato
4-la macro, inoltre, applicherà anche gli stessi colori di sfondo a tutte le tabelle di quell'intervallo, che hanno le stesse dimensioni della tabella di riferimento (quindi se la tabella di riferimento è una 2x4, solo le tabelle 2x4 cambieranno i colori di sfondo)
Nota:
Durante i punti 3 e 4, il cursore all'interno del documento, salterà rapidamente da una tabella ad un'altra, passando per tutte le tabelle presenti, ma i cambiamenti si avranno solo nelle tabelle che rispettano i criteri sopra esposti.
Allego anche il codice:
Cercare di selezionare un certo numero di tabelle per poi aprire il menu contestuale con il tasto destro è una strada non percorribile. Anche con le macro si può selezionare solo una tabella alla volta.
Ho quindi cambiato strategia e cercato di fare una macro che ti possa servire.
Espongo la strategia scelta e il funzionamento della macro:
1-Personalizzi una tabella, per esempio la prima di pagina 6, che è una 2x4 (bordi e sfondi cella). Tale tabella sarà il modello che la macro userà per personalizzare altre tabelle.
2-Una volta fatte le modifiche volute, avvi la macro (che ho chiamato "Test"). Tale macro ti chiede di inserire 3 informazioni:
I-il nome della tabella da prendere come riferimento (il nome lo leggi sulla barra inferiore quando porti il cursore all'interno della tabella) II-il numero di pagina in cui iniziare a cercare le tabelle da modificare
III-il numero dell'ultima pagina su cui cercare le tabelle da modificare
3-la macro, una volta ottenuti questi tre dati, applica i bordi della tabella di riferimento a tutte le tabelle presenti nell'intervallo individuato dalle pagine che hai indicato
4-la macro, inoltre, applicherà anche gli stessi colori di sfondo a tutte le tabelle di quell'intervallo, che hanno le stesse dimensioni della tabella di riferimento (quindi se la tabella di riferimento è una 2x4, solo le tabelle 2x4 cambieranno i colori di sfondo)
Nota:
Durante i punti 3 e 4, il cursore all'interno del documento, salterà rapidamente da una tabella ad un'altra, passando per tutte le tabelle presenti, ma i cambiamenti si avranno solo nelle tabelle che rispettano i criteri sopra esposti.
Allego anche il codice:
Codice: Seleziona tutto
sub test
dim pagI,pagF
oFrame = ThisComponent.CurrentController.Frame
oDispHelper = createUnoService("com.sun.star.frame.DispatchHelper")
oTables=ThisComponent.getTextTables()
nomeTabRif=inputbox("scrivi nome tabella riferimento")
oTabRif=oTables.getbyName(nomeTabRif)
ThisComponent.getCurrentController().select(oTabRif)
oDispHelper.executeDispatch(oFrame, ".uno:SelectTable", "", 0, Array())
oSel=thiscomponent.CurrentSelection
NomeRangeRif=oSel.RangeName
pagI=inputbox("Seleziona pagina di inizio")
pagF=inputbox("Seleziona pagina di fine")
For i = 1 To oTables.getCount() - 1
oTable = oTables.getByIndex(i)
ThisComponent.getCurrentController().select(oTable)
view_cursor=ThisComponent.CurrentController.ViewCursor
inpagina=view_cursor.getPage()
if inpagina>=cint(pagI) and inpagina<=cint(pagF) then
oDispHelper.executeDispatch(oFrame, ".uno:SelectTable", "", 0, Array())
oSel=thiscomponent.CurrentSelection
NomeRange=oSel.RangeName
oTable.setpropertyvalue("TableBorder",oTabRif.getpropertyvalue("TableBorder"))
oTable.setpropertyvalue("BackColor",oTabRif.getpropertyvalue("BackColor"))
if NomeRange=NomeRangeRif and oTabRif.Name<>oTable.Name then
for k=0 to ubound(oTabRif.DataArray,1)
for kk=0 to ubound(oTabRif.DataArray(k),1)
oTable.getCellByPosition(kk,k).setpropertyvalue("BackColor",oTabRif.getCellByPosition(kk,k).getpropertyvalue("BackColor"))
next
next
end if
end if
next
ThisComponent.getCurrentController().select(oTabRif)
msgbox "Fine"
end sub
- Allegati
-
- 00-PSC-ROCCA DI ROMANENGO E CASCINETTA.odt
- (60.14 KiB) Scaricato 311 volte
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Re: Macro per selezionare più tabelle contemporaneamente
Ulteriore nota:
C'è una tabella nel documento che dava problemi alla macro, la tabella chiamata "Tabella95", che nonostante il nome, è la tabella con index 0.
Non sò che tabella sia, la vedo nell'elenco del Navigatore, nel quale compare come tabella nascosta (voce in grigio), ma non riesco a mostrarla.
Per non far andare in errore la macro, quindi, ho impostato come indice iniziale per ciclare le tabelle il valore 1, così da saltarla.
Mi farebbe comunque piacere capire come si può mostrare una tabella nascosta, perchè non ci arrivo
C'è una tabella nel documento che dava problemi alla macro, la tabella chiamata "Tabella95", che nonostante il nome, è la tabella con index 0.
Non sò che tabella sia, la vedo nell'elenco del Navigatore, nel quale compare come tabella nascosta (voce in grigio), ma non riesco a mostrarla.
Per non far andare in errore la macro, quindi, ho impostato come indice iniziale per ciclare le tabelle il valore 1, così da saltarla.
Mi farebbe comunque piacere capire come si può mostrare una tabella nascosta, perchè non ci arrivo
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Re: Macro per selezionare più tabelle contemporaneamente
Leggo solo ora la tua risposta. Al momento non ho la possibilità di provare la tua macro, ma conto di riuscirci stasera, poi ti farò sapere.
Per quanto riguarda la "Tabella 95", non ti saprei dire. questi sono file che passano anche a me, di solito in formato doc e poi io debbo sistemarli e integrarli aggiungendo altri dati.
Grazie infinite per la tua disponibilità e il tuo aiuto.
Per quanto riguarda la "Tabella 95", non ti saprei dire. questi sono file che passano anche a me, di solito in formato doc e poi io debbo sistemarli e integrarli aggiungendo altri dati.
Grazie infinite per la tua disponibilità e il tuo aiuto.
LibreOffice portable V. 6.3.3.2 (x86), su Windows 10
Re: Macro per selezionare più tabelle contemporaneamente
Capito. E' una tabella che si genera passando dal formato Doc al formato Odt.
Provando la visualizzazione "Layout web", il navigatore mi indica come prima tabella
la "Tabella94" che nell'altra visualizzazione non c'era, mentre la "Tabella95" compare come seconda.
Con file odt originali non ci sono invece tabelle nascoste di questo tipo.
Provando la visualizzazione "Layout web", il navigatore mi indica come prima tabella
la "Tabella94" che nell'altra visualizzazione non c'era, mentre la "Tabella95" compare come seconda.
Con file odt originali non ci sono invece tabelle nascoste di questo tipo.
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Re: Macro per selezionare più tabelle contemporaneamente
Ieri sera ho testato la tua macro e funziona! Grazie mille.
L'unica cosa che non riesco a fare è modificare la larghezza delle tabelle, ma poco male, non si può avere tutto nella vita!
Ancora molte grazie!
P.s.: io ho aperto questa discussione su forum Majorana 2 e lì, il moderatore, vedendo che non ottenevo risposte mi ha consigliato di rivolgermi a questo forum.
Tutto questo per chiedere se posso comunicare anche a loro la risoluzione del mio problema e, citando la fonte, allegare la macro in oggetto. Grazie.
L'unica cosa che non riesco a fare è modificare la larghezza delle tabelle, ma poco male, non si può avere tutto nella vita!
Ancora molte grazie!
P.s.: io ho aperto questa discussione su forum Majorana 2 e lì, il moderatore, vedendo che non ottenevo risposte mi ha consigliato di rivolgermi a questo forum.
Tutto questo per chiedere se posso comunicare anche a loro la risoluzione del mio problema e, citando la fonte, allegare la macro in oggetto. Grazie.
LibreOffice portable V. 6.3.3.2 (x86), su Windows 10
Re: Macro per selezionare + tabelle contemporaneamente
Certo, stai parlando di un Forum amico !
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Macro per selezionare più tabelle contemporaneamente
Ma certo che puoi.
Vuoi anche cambiare le dimensioni delle tabelle? Quando ho del tempo provo ad aggiungere questa funzionalità alla macro
Vuoi anche cambiare le dimensioni delle tabelle? Quando ho del tempo provo ad aggiungere questa funzionalità alla macro
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Re: Macro per selezionare + tabelle contemporaneam
Beh, non so cosa dire, Grazie!
LibreOffice portable V. 6.3.3.2 (x86), su Windows 10
Re: [Risolto] Macro per selezionare + tabelle contemporaneam
Ho una nuova macro
Consiglio di verificarne l'efficacia più di una volta.
Dovrebbe cambiare quasi tutte le proprietà delle tabelle applicando quelle della Tabella presa come riferimento ( dovrebbero essere incluse tutte le impostazioni principali)
Codice: Seleziona tutto
sub test
dim pagI,pagF
oFrame = ThisComponent.CurrentController.Frame
oDispHelper = createUnoService("com.sun.star.frame.DispatchHelper")
oTables=ThisComponent.getTextTables()
nomeTabRif=inputbox("scrivi nome tabella riferimento")
oTabRif=oTables.getbyName(nomeTabRif)
ProprietaTabRif=oTabRif.PropertySetInfo.Properties
ThisComponent.getCurrentController().select(oTabRif)
oDispHelper.executeDispatch(oFrame, ".uno:SelectTable", "", 0, Array())
oSel=thiscomponent.CurrentSelection
NomeRangeRif=oSel.RangeName
pagI=inputbox("Seleziona pagina di inizio")
pagF=inputbox("Seleziona pagina di fine")
For i = 0 To oTables.getCount() - 1
oTable = oTables.getByIndex(i)
ThisComponent.getCurrentController().select(oTable)
view_cursor=ThisComponent.CurrentController.ViewCursor
inpagina=view_cursor.getPage()
if inpagina>=cint(pagI) and inpagina<=cint(pagF) then
oDispHelper.executeDispatch(oFrame, ".uno:SelectTable", "", 0, Array())
oSel=thiscomponent.CurrentSelection
NomeRange=oSel.RangeName
if NomeRange=NomeRangeRif and oTabRif.Name<>oTable.Name then
ProprietaTab=oTable.PropertySetInfo.Properties
if ubound(ProprietaTab)=ubound(ProprietaTabRif) then
for k=1 to ubound(ProprietaTab)
Cosa=ProprietaTab(k).Name
Pmodello=oTabRif.getpropertyvalue(Cosa)
on Error resume next
oTable.setpropertyvalue(Cosa,Pmodello)
next
end if
for k=0 to ubound(oTabRif.DataArray,1)
for kk=0 to ubound(oTabRif.DataArray(k),1)
oTable.getCellByPosition(kk,k).setpropertyvalue("BackColor",oTabRif.getCellByPosition(kk,k).getpropertyvalue("BackColor"))
next
next
end if
end if
next
ThisComponent.getCurrentController().select(oTabRif)
msgbox "Fine"
end sub
Dovrebbe cambiare quasi tutte le proprietà delle tabelle applicando quelle della Tabella presa come riferimento ( dovrebbero essere incluse tutte le impostazioni principali)
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Re: Macro per selezionare + tabelle contemporaneam
Fantastico, funziona!
Come da te consigliato ho provato a fare un po' di prove. Sono andate quasi tutte bene tranne un paio, ma forse perchè avevo voluto apportare troppe modifiche contemporaneamente.
Non so cos'altro dire se non di nuovo ringraziarti molto!
Buona giornata, ciao.
Come da te consigliato ho provato a fare un po' di prove. Sono andate quasi tutte bene tranne un paio, ma forse perchè avevo voluto apportare troppe modifiche contemporaneamente.
Non so cos'altro dire se non di nuovo ringraziarti molto!
Buona giornata, ciao.
LibreOffice portable V. 6.3.3.2 (x86), su Windows 10
Re: [Risolto] Macro per selezionare + tabelle contemporaneam
Buongiorno,
riprendo questa discussione perché avrei un'altra richiesta da fare: è possibile fare in modo che la macro mi cambia automaticamente anche la formattazione del testo di tutte le tabelle?
Confido in voi e spero tanto di si!
Grazie mille.
riprendo questa discussione perché avrei un'altra richiesta da fare: è possibile fare in modo che la macro mi cambia automaticamente anche la formattazione del testo di tutte le tabelle?
Confido in voi e spero tanto di si!
Grazie mille.
LibreOffice portable V. 6.3.3.2 (x86), su Windows 10
Re: Macro per selezionare + tabelle contemporaneam
Ciao
Stando così le cose ho cambiato approccio.
-La macro seleziona la tabella modello e la copia
-cerca le tabelle simili nell'intervallo di pagine indicato
-seleziona la tabella simile, salva il contenuto in un'array
-incolla la tabella modello al posto della tabella simile, in modo tale da applicare tutte le modifiche di stile
-riscrive nella tabella i testi che c'erano in precedenza, che vengono persi con il punto precedente
Stando così le cose ho cambiato approccio.
-La macro seleziona la tabella modello e la copia
-cerca le tabelle simili nell'intervallo di pagine indicato
-seleziona la tabella simile, salva il contenuto in un'array
-incolla la tabella modello al posto della tabella simile, in modo tale da applicare tutte le modifiche di stile
-riscrive nella tabella i testi che c'erano in precedenza, che vengono persi con il punto precedente
Codice: Seleziona tutto
sub test
dim pagI,pagF
dim Valori()
oFrame = ThisComponent.CurrentController.Frame
oDispHelper = createUnoService("com.sun.star.frame.DispatchHelper")
oTables=ThisComponent.getTextTables()
nomeTabRif=inputbox("scrivi nome tabella riferimento")
'nomeTabRif="Tabella1"
oTabRif=oTables.getbyName(nomeTabRif)
ProprietaTabRif=oTabRif.PropertySetInfo.Properties
ThisComponent.getCurrentController().select(oTabRif)
oDispHelper.executeDispatch(oFrame, ".uno:SelectTable", "", 0, Array())
oDispHelper.executeDispatch(oFrame, ".uno:Copy", "", 0, Array())
oSel=thiscomponent.CurrentSelection
NomeRangeRif=oSel.RangeName
pagI=inputbox("Seleziona pagina di inizio")
pagF=inputbox("Seleziona pagina di fine")
'pagI=1
'pagF=4
For i = 0 To oTables.getCount() - 1
oTable = oTables.getByIndex(i)
ThisComponent.getCurrentController().select(oTable)
view_cursor=ThisComponent.CurrentController.ViewCursor
inpagina=view_cursor.getPage()
if inpagina>=cint(pagI) and inpagina<=cint(pagF) then
oDispHelper.executeDispatch(oFrame, ".uno:SelectTable", "", 0, Array())
oSel=thiscomponent.CurrentSelection
NomeRange=oSel.RangeName
if NomeRange=NomeRangeRif and oTabRif.Name<>oTable.Name then
Valori=DimArray(ubound(oTabRif.DataArray,1))
for k=0 to ubound(oTabRif.DataArray,1)
Valori(k)=raccoltavalori(oTable,k)
next
oDispHelper.executeDispatch(oFrame, ".uno:Paste", "", 0, Array())
call ripristinavalori(Valori,oTable)
end if
end if
next
ThisComponent.getCurrentController().select(oTabRif)
msgbox "Fine"
end sub
function raccoltavalori(oTable as object,k as integer)
dim myarray() as string
'msgbox oTable.Name
on error resume next
'msgbox ubound(oTable.DataArray(k),1)
myarray=DimArray(ubound(oTable.DataArray(k),1))
for kk=0 to ubound(myarray)
myarray(kk)=oTable.getCellByPosition(kk,k).string
next
raccoltavalori=myarray
end function
sub ripristinavalori(Valori,oTable as object)
for k=0 to ubound(Valori)
for kk=0 to ubound(Valori(k))
oTable.getCellByPosition(kk,k).string=Valori(k)(kk)
next
next
end sub
- Allegati
-
- ProvaTabella.odt
- (34.12 KiB) Scaricato 205 volte
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Re: [Risolto] Macro per selezionare + tabelle contemporaneam
Ciao Unlucky83,
intanto grazie per l'aito che non manchi mai di darmi.
Ieri ho provato la tuo nuova macro che però, sembra non funzionare o più probabilmente io non la so usare.
Ho aperto il file che hai allegato, ho selezionato la prima tabella dell'ultima pagina e ho modificato sfondo e altezza dei caratteri. Quindi ho lanciato la macro che all'inizio mi ha chiesto di indicargli la tabella di riferimento, ossia quella modificata prima,e l'intervallo di pagine dove cercare le altre tabelle da modificare. Fatto questo ho dato l'invio e la macro ha iniziato il suo processo però, alla fine, non ha modificato nessuna tabella (io mi aspettavo modificasse quelle simili che si trovano nella stessa pagina). Ho sbagliato qualcosa?
Ancora grazie.
Ciao e buona giornata.
intanto grazie per l'aito che non manchi mai di darmi.
Ieri ho provato la tuo nuova macro che però, sembra non funzionare o più probabilmente io non la so usare.
Ho aperto il file che hai allegato, ho selezionato la prima tabella dell'ultima pagina e ho modificato sfondo e altezza dei caratteri. Quindi ho lanciato la macro che all'inizio mi ha chiesto di indicargli la tabella di riferimento, ossia quella modificata prima,e l'intervallo di pagine dove cercare le altre tabelle da modificare. Fatto questo ho dato l'invio e la macro ha iniziato il suo processo però, alla fine, non ha modificato nessuna tabella (io mi aspettavo modificasse quelle simili che si trovano nella stessa pagina). Ho sbagliato qualcosa?
Ancora grazie.
Ciao e buona giornata.
LibreOffice portable V. 6.3.3.2 (x86), su Windows 10
Re: [Risolto] Macro per selezionare + tabelle contemporaneam
Ciao. Ho provato a modificare l'ultima tabella dell'esempio (Tabella108) e ad applicare le modifiche a tutte le tabelle simili presenti nelle pagine da 1 a 4. La macro mi ha modificato l'unica tabella simile presente nel documento (Tabella47, in pag. 4). Quindi forse hai sbagliato qualcosa, del tipo hai fatto una ricerca nell'intervallo di pagina 1-3...
La macro da lanciare è la macro "test"
La macro da lanciare è la macro "test"
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Re: [Risolto] Macro per selezionare + tabelle contemporaneam
Ciao,
ho fatto nuovamente una prova e mi sono accorto che effetivamente la formattazione dei testi viene cambiata, mentre le altre formattazioni no.
Quindi forse non avevo capito che, questa macro, serve solo per cambiare la formattazione dei testi, mentre per cambiare tutte le altre formattazioni della tabella devo usare quella che mi avevi fornito la volta scorsa: è così?
Di nuovo grazie! Ciao.
ho fatto nuovamente una prova e mi sono accorto che effetivamente la formattazione dei testi viene cambiata, mentre le altre formattazioni no.
Quindi forse non avevo capito che, questa macro, serve solo per cambiare la formattazione dei testi, mentre per cambiare tutte le altre formattazioni della tabella devo usare quella che mi avevi fornito la volta scorsa: è così?
Di nuovo grazie! Ciao.
LibreOffice portable V. 6.3.3.2 (x86), su Windows 10
Re: [Risolto] Macro per selezionare + tabelle contemporaneam
Hai ragione!! Non volevo adoperare entrambe le macro, questa doveva sostituire la vecchia versione. ora l'aggiusto e te la invio
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Re: [Risolto] Macro per selezionare + tabelle contemporaneam
Codice: Seleziona tutto
sub test
dim pagI,pagF
dim Valori()
oFrame = ThisComponent.CurrentController.Frame
oDispHelper = createUnoService("com.sun.star.frame.DispatchHelper")
oTables=ThisComponent.getTextTables()
nomeTabRif=inputbox("scrivi nome tabella riferimento")
oTabRif=oTables.getbyName(nomeTabRif)
ProprietaTabRif=oTabRif.PropertySetInfo.Properties
ThisComponent.getCurrentController().select(oTabRif)
oDispHelper.executeDispatch(oFrame, ".uno:SelectTable", "", 0, Array())
oDispHelper.executeDispatch(oFrame, ".uno:Copy", "", 0, Array())
oSel=thiscomponent.CurrentSelection
NomeRangeRif=oSel.RangeName
pagI=inputbox("Seleziona pagina di inizio")
pagF=inputbox("Seleziona pagina di fine")
For i = 0 To oTables.getCount() - 1
oTable = oTables.getByIndex(i)
ThisComponent.getCurrentController().select(oTable)
view_cursor=ThisComponent.CurrentController.ViewCursor
inpagina=view_cursor.getPage()
if inpagina>=cint(pagI) and inpagina<=cint(pagF) then
oDispHelper.executeDispatch(oFrame, ".uno:SelectTable", "", 0, Array())
oSel=thiscomponent.CurrentSelection
NomeRange=oSel.RangeName
if NomeRange=NomeRangeRif and oTabRif.Name<>oTable.Name then
Valori=DimArray(ubound(oTabRif.DataArray,1))
for k=0 to ubound(oTabRif.DataArray,1)
Valori(k)=raccoltavalori(oTable,k)
next
oDispHelper.executeDispatch(oFrame, ".uno:Paste", "", 0, Array())
call ripristinavalori(Valori,oTable,oTabRif)
end if
end if
next
ThisComponent.getCurrentController().select(oTabRif)
msgbox "Fine"
end sub
function raccoltavalori(oTable as object,k as integer)
dim myarray() as string
'msgbox oTable.Name
on error resume next
'msgbox ubound(oTable.DataArray(k),1)
myarray=DimArray(ubound(oTable.DataArray(k),1))
for kk=0 to ubound(myarray)
myarray(kk)=oTable.getCellByPosition(kk,k).string
next
raccoltavalori=myarray
end function
sub ripristinavalori(Valori,oTable as object,oTabRif as object)
for k=0 to ubound(Valori)
for kk=0 to ubound(Valori(k))
oTable.getCellByPosition(kk,k).string=Valori(k)(kk)
oTable.getCellByPosition(kk,k).setpropertyvalue("BackColor",oTabRif.getCellByPosition(kk,k).getpropertyvalue("BackColor"))
next
next
end sub
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Re: Macro per selezionare + tabelle contemporaneam
Perfetto!!!
Grazie, grazie, grazie!!!
Ciao, buona giornata.
Grazie, grazie, grazie!!!
Ciao, buona giornata.
LibreOffice portable V. 6.3.3.2 (x86), su Windows 10
Re: Macro per selezionare + tabelle contemporaneam
C'è ancora una cosa che va sistemata, infatti i bordi della tabella non vengono replicati correttamente
Ho modificato di nuovo il codice, questa volta dovrebbe essere anche più comprensibile come lettura
Ho modificato di nuovo il codice, questa volta dovrebbe essere anche più comprensibile come lettura
Codice: Seleziona tutto
REM ***** BASIC *****
option explicit
const test as string="no" 'se impostato diversamente, applica lo stile di Tabella1 alle tabelle simili presenti in pagina 1
Sub ApplicaStileTab
dim oSel,oController
'oSel=ThisComponent.CurrentSelection
oController=ThisComponent.CurrentController
dim oFrame,oViewcursor
oFrame = oController.Frame
'oViewcursor=oController.ViewCursor
dim oDispHelper 'service
oDispHelper = createUnoService("com.sun.star.frame.DispatchHelper")
dim oTables,oTabRif,oTable
oTables=ThisComponent.getTextTables()
dim pagI,pagF,nomeTabRif as string 'input
dim NomeRangeRif,NomeRange as string
dim i,k as integer 'indici cicli for
dim inpagina 'pagina della tabella corrente
dim Valori() 'array che conserva il testo della tabella
if test="no" then
nomeTabRif=inputbox("scrivi nome tabella riferimento")
pagI=inputbox("Seleziona pagina di inizio")
pagF=inputbox("Seleziona pagina di fine")
else
nomeTabRif="Tabella1"
pagI="1"
pagF="1"
end if
oTabRif=oTables.getbyName(nomeTabRif)
oController.select(oTabRif)
oDispHelper.executeDispatch(oFrame, ".uno:SelectTable", "", 0, Array())
oDispHelper.executeDispatch(oFrame, ".uno:Copy", "", 0, Array())
oSel=ThisComponent.CurrentSelection
NomeRangeRif=oSel.RangeName
rem cerca tra le tabelle
For i = 0 To oTables.getCount() - 1
oTable = oTables.getByIndex(i)
oController.select(oTable)
oViewcursor=oController.ViewCursor
inpagina=oViewcursor.getPage()
if inpagina>=cint(pagI) and inpagina<=cint(pagF) then
oDispHelper.executeDispatch(oFrame, ".uno:SelectTable", "", 0, Array())
oSel=ThisComponent.CurrentSelection
NomeRange=oSel.RangeName
rem controlla che le tabelle siano simili, ma che non sia la stessa
if NomeRange=NomeRangeRif and oTabRif.Name<>oTable.Name then
Valori=DimArray(ubound(oTabRif.DataArray,1))
for k=0 to ubound(oTabRif.DataArray,1)
Valori(k)=raccoltavalori(oTable,k)
next
oDispHelper.executeDispatch(oFrame, ".uno:Paste", "", 0, Array())
call ripristinavalori(Valori,oTable,oTabRif)
end if
end if
next
oController.select(oTabRif)
msgbox "Fine"
End Sub
function raccoltavalori(oTable as object,k as integer)
dim myarray() as string
dim kk as integer 'indice ciclo
on error resume next
myarray=DimArray(ubound(oTable.DataArray(k),1))
for kk=0 to ubound(myarray)
myarray(kk)=oTable.getCellByPosition(kk,k).string
next
raccoltavalori=myarray
end function
sub ripristinavalori(Valori,oTable as object,oTabRif as object)
dim ProprietaTabRif,ProprietaCellRif
dim k,kk,kkk as integer 'indici cicli
ProprietaTabRif=oTabRif.PropertySetInfo.Properties
for k=0 to ubound(ProprietaTabRif)
on error resume next
oTable.setpropertyvalue(ProprietaTabRif(k).Name,oTabRif.getpropertyvalue(ProprietaTabRif(k).Name))
next
for k=0 to ubound(Valori)
for kk=0 to ubound(Valori(k))
ProprietaCellRif=oTable.getCellByPosition(kk,k).PropertySetInfo.Properties
for kkk=0 to ubound(ProprietaCellRif)
oTable.getCellByPosition(kk,k).setpropertyvalue(ProprietaCellRif(kkk).Name,oTabRif.getCellByPosition(kk,k).getpropertyvalue(ProprietaCellRif(kkk).Name))
next
oTable.getCellByPosition(kk,k).string=Valori(k)(kk)
next
next
end sub
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Re: Macro per selezionare + tabelle contemporaneam
Ottimo lavoro!
Purtroppo per me, il codice rimane comunque incomprensibile! Non so niente di programmazione.
Grazie mille!
Ciao, alla prossima.
Purtroppo per me, il codice rimane comunque incomprensibile! Non so niente di programmazione.
Grazie mille!
Ciao, alla prossima.
LibreOffice portable V. 6.3.3.2 (x86), su Windows 10
Re: [Risolto] Macro per selezionare + tabelle contemporaneam
ciao a tutti.
Scusate se riesumo un vecchissimo post, ma il mio problema è analogo a quello di GLF, quindi mi sembrava stupido ricominciare da capo.
Ho un file con un centinaio di tabelle che devono avere tutte la stessa formattazione, in particolare mi serve ridimensionarle tutte allo stesso modo.
Ciascuna tabella ha due righe, di cui la prima composta da una sola colonna e la seconda da 2, quindi in totale sono 3 celle.
Nella prima riga c'è un'immagine e nella seconda del testo.
La prima riga deve diventare 10.5mm di altezza e la seconda 4.5mm.....Tutto qui.
Ho provato la macro postata, ma non modifica l'altezza delle righe e mi sovrascrive il testo della seconda colonna della seconda riga in tutte le tabelle, prendendo quello che trova nella tabella di riferimento.
Allego un esempio:
Io vorrei rendere tutte le tabelle uguali a quelle di pagina 1, ma in pratica mi scrive C in tutte le tabelle nella seconda colonna della seconda riga e non modifica le altezze delle righe.
Qualcuno potrebbe aiutarmi, per cortesia?
Scusate se riesumo un vecchissimo post, ma il mio problema è analogo a quello di GLF, quindi mi sembrava stupido ricominciare da capo.
Ho un file con un centinaio di tabelle che devono avere tutte la stessa formattazione, in particolare mi serve ridimensionarle tutte allo stesso modo.
Ciascuna tabella ha due righe, di cui la prima composta da una sola colonna e la seconda da 2, quindi in totale sono 3 celle.
Nella prima riga c'è un'immagine e nella seconda del testo.
La prima riga deve diventare 10.5mm di altezza e la seconda 4.5mm.....Tutto qui.
Ho provato la macro postata, ma non modifica l'altezza delle righe e mi sovrascrive il testo della seconda colonna della seconda riga in tutte le tabelle, prendendo quello che trova nella tabella di riferimento.
Allego un esempio:
Io vorrei rendere tutte le tabelle uguali a quelle di pagina 1, ma in pratica mi scrive C in tutte le tabelle nella seconda colonna della seconda riga e non modifica le altezze delle righe.
Qualcuno potrebbe aiutarmi, per cortesia?
- Allegati
-
- prova tabelle.odt
- (10.12 KiB) Scaricato 143 volte
OpenOffice 4.1.5 su Windows 10
Re: Macro per selezionare + tabelle contemporaneamente
Non so se è stata una buona idea, potresti essere "meno visibile"gs1960 ha scritto:cusate se riesumo un vecchissimo post, ma il mio problema è analogo a quello di GLF, quindi mi sembrava stupido ricominciare da capo.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: [Risolto] Macro per selezionare + tabelle contemporaneam
Hai ragione, c'è scritto RISOLTO, quindi effettivamente.....
Allora ne apro uno nuovo e magari faccio un rimando a questo
Grazie!
Allora ne apro uno nuovo e magari faccio un rimando a questo
Grazie!
OpenOffice 4.1.5 su Windows 10