[Risolto] semplicemente copia/scambia una colonna su un'al
[Risolto] semplicemente copia/scambia una colonna su un'al
sono alle prime armi e uso libreoffice
devo semplicemente creare una macro che mi scambi due colonne con i relativi dati
quindi colonna b del file, va sopra la colonna f dello stesso file, e viceversa.
tutto qui
potete aiutarmi ?
grazie mille
gianni
devo semplicemente creare una macro che mi scambi due colonne con i relativi dati
quindi colonna b del file, va sopra la colonna f dello stesso file, e viceversa.
tutto qui
potete aiutarmi ?
grazie mille
gianni
Ultima modifica di cater58 il sabato 16 settembre 2017, 21:46, modificato 1 volta in totale.
Libreoffice 2.2.3 con MacOS 10.4
Re: semplicemente copia/scambia una colonna su un'altra
Lo devi fare in modo ripetitivo o ti serve solo una volta? Nel secondo caso ti basta selezionare la colonna, cominciare a spostarla, premere il tasto ALT e quando sei in prossimità del bordo dx o sx della colonna, a seconda della direzione in cui sposti (il puntatore cambia forma), rilasciare il mouse.
https://youtu.be/rEmp78xqewY
https://youtu.be/rEmp78xqewY
...se sei soddisfatto delle risposte ricevute metti il [Risolto] viewtopic.php?f=9&t=5661
Libreoffice 25.8 LinuxMint 21/22
Libreoffice 25.8 LinuxMint 21/22
Re: semplicemente copia/scambia una colonna su un'altra
grazie per l'interessamento ...
noi, la devo usare continuamentew in concomitanza con altre istruzioni della macro e vorrei comunque liberarmi di libreoffice e farlo con openoffice
la macro che ho gia fatto cancella delle colonne inutili.
a questa macro andrebbe aggiunte le istruzione per fare in modo che due colonne si scambino di posizione (quindi la colonna 2 deve andare al posto della 5 e viceversa)
... a mano so come fare
noi, la devo usare continuamentew in concomitanza con altre istruzioni della macro e vorrei comunque liberarmi di libreoffice e farlo con openoffice
la macro che ho gia fatto cancella delle colonne inutili.
a questa macro andrebbe aggiunte le istruzione per fare in modo che due colonne si scambino di posizione (quindi la colonna 2 deve andare al posto della 5 e viceversa)
... a mano so come fare
Libreoffice 2.2.3 con MacOS 10.4
Re: semplicemente copia/scambia una colonna su un'altra
di fatto si tratta di un CVS (delimitatore virgola) che scarico da un sito, e che va successivamente caricato in un altro.
le differenze di impostazione delle colonne dei due siti mi rendono necessario un lavoro di routine sul file stesso
a seguire avro bisogno della vostra gentilezza anche per altre info - sono cose semplici per che maneggia VBA o macro da anni
le differenze di impostazione delle colonne dei due siti mi rendono necessario un lavoro di routine sul file stesso
a seguire avro bisogno della vostra gentilezza anche per altre info - sono cose semplici per che maneggia VBA o macro da anni
Libreoffice 2.2.3 con MacOS 10.4
Re: semplicemente copia/scambia una colonna su un'altra
Scambiare il posto di due colonne , niente altro.
... sembra strano ma non riesco a trovare nulla... trovo tutte soluzioni di cose piu complicate!
... sembra strano ma non riesco a trovare nulla... trovo tutte soluzioni di cose piu complicate!
Libreoffice 2.2.3 con MacOS 10.4
Re: semplicemente copia/scambia una colonna su un'altra
proprio nessuno sa come farlo?
Libreoffice 2.2.3 con MacOS 10.4
Re: semplicemente copia/scambia una colonna su un'altra
Ciao, visto che ancora non lo hai fatto, se vuoi presentarti puoi farlo in questa sezione: viewforum.php?f=16
Poi, per essere meglio aiutato prova a postare un file di esempio (senza dati sensibili). Probabilmente si può impostare una macro con il registratore.
Poi, per essere meglio aiutato prova a postare un file di esempio (senza dati sensibili). Probabilmente si può impostare una macro con il registratore.
charlie
macOS 15.5 Sequoia: Open Office 4.1.16 - LibreOffice 25.8
http://www.charlieopenoffice.altervista.org
macOS 15.5 Sequoia: Open Office 4.1.16 - LibreOffice 25.8
http://www.charlieopenoffice.altervista.org
Re: semplicemente copia/scambia una colonna su un'altra
il registratore mi rende una registrazione ma non funziona
ora vedo chi posso fare
grazie
ora vedo chi posso fare
grazie
Libreoffice 2.2.3 con MacOS 10.4
Re: semplicemente copia/scambia una colonna su un'altra
allegato prova (in ods ma l'originale è csv - non è permesso allegare csv)
in pratica:
1) i dati sotto la colonna comments devono andare sotto la colonna location - ma le caselle dove c'e' scritto comment e location (le prime caselle delle colonne) devono rimanere dove sono senza modifiche
2) i dati della colonna comments devono riportare TUTTI una steinga (es "Prova"
questo è quanto ...
questa macro deve essere aggiunta ad una esistente che ho gia realizzato io ... per aggiungerla basta inserire le istruzioni nella precedente macro?
grazie mille per l'aiuto
Gianni
in pratica:
1) i dati sotto la colonna comments devono andare sotto la colonna location - ma le caselle dove c'e' scritto comment e location (le prime caselle delle colonne) devono rimanere dove sono senza modifiche
2) i dati della colonna comments devono riportare TUTTI una steinga (es "Prova"
questo è quanto ...
questa macro deve essere aggiunta ad una esistente che ho gia realizzato io ... per aggiungerla basta inserire le istruzioni nella precedente macro?
grazie mille per l'aiuto
Gianni
- Allegati
-
- prova.ods
- (9.09 KiB) Scaricato 166 volte
Libreoffice 2.2.3 con MacOS 10.4
Re: semplicemente copia/scambia una colonna su un'altra
ecco come dovrebbe essere ...
- Allegati
-
- PROVA OK.ods
- (8.59 KiB) Scaricato 143 volte
Libreoffice 2.2.3 con MacOS 10.4
Re: semplicemente copia/scambia una colonna su un'altra
ancora provato con registratore ... ma non pare capire che fare
questo è il codice che salva la macro:
questo è il codice che salva la macro:
Codice: Seleziona tutto
Sub Main
REM CANCELLA COLONNE INDESIDERATE - questa la ho fatta io
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
Doc = ThisComponent
Sheet = Doc.Sheets(0)
Sheet.Columns.removeByIndex(0, 6)
Sheet.Columns.removeByIndex(1, 1)
Sheet.Columns.removeByIndex(2, 1)
Sheet.Columns.removeByIndex(6, 4)
end sub
sub Main2 - QUESTA E' STATA REGISTRATA E DOVREBBE FARE CIO CHE MI SERVE
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 ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$G$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "ToPoint"
args4(0).Value = "$G$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args4())
end subLibreoffice 2.2.3 con MacOS 10.4
Re: semplicemente copia/scambia una colonna su un'altra
Ciao, non sono esperto di macro.
Ne ho reperita qualcuna (magari non troppo ortodossa), adattata e assegnata ciascuna all'azione di un pulsante
L'unica cosa che manca per ora è la selezione della colonna attiva, ma tanto vale farlo con un clic.
Vedi se ti possono servire.
Ne ho reperita qualcuna (magari non troppo ortodossa), adattata e assegnata ciascuna all'azione di un pulsante
L'unica cosa che manca per ora è la selezione della colonna attiva, ma tanto vale farlo con un clic.
Vedi se ti possono servire.
- Allegati
-
- Inverti colonne.ods
- (14.81 KiB) Scaricato 169 volte
charlie
macOS 15.5 Sequoia: Open Office 4.1.16 - LibreOffice 25.8
http://www.charlieopenoffice.altervista.org
macOS 15.5 Sequoia: Open Office 4.1.16 - LibreOffice 25.8
http://www.charlieopenoffice.altervista.org
Re: semplicemente copia/scambia una colonna su un'altra
ciao cater58, come intendi indicare le colonne da scambiare ? sono sempre le stesse ?
-------------------
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: semplicemente copia/scambia una colonna su un'altra
cater58 ha scritto:in pratica:
1) i dati sotto la colonna comments devono andare sotto la colonna location - ma le caselle dove c'e' scritto comment e location (le prime caselle delle colonne) devono rimanere dove sono senza modifiche
2) i dati della colonna comments devono riportare TUTTI una steinga (es "Prova"
questo è quanto ...
Codice: Seleziona tutto
Sub SpostaDatiDa_C_a_F
doc=thiscomponent
Sh1 = Doc.Sheets(0)
c = Sh1.createCursor
c.gotoEndOfUsedArea(false)
UltimaRiga = c.RangeAddress.EndRow
For Riga = 1 to UltimaRiga
Sh1.getCellByPosition(6, Riga).string = Sh1.getCellByPosition(2, Riga).string
Sh1.getCellByPosition(2, Riga).string = "PROVA"
Next Riga
End SubRe: semplicemente copia/scambia una colonna su un'altra
si le colonne da spostare sono sempre quelle.
ora provo la soluzione di lucky63
ora provo la soluzione di lucky63
Libreoffice 2.2.3 con MacOS 10.4
Re: semplicemente copia/scambia una colonna su un'altra
Codice: Seleziona tutto
REM ***** BASIC *****
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
REM CANCELLA COLONNE INDESIDERATE
sub main
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
Doc = ThisComponent
Sheet = Doc.Sheets(0)
Sheet.Columns.removeByIndex(0, 6)
Sheet.Columns.removeByIndex(1, 1)
Sheet.Columns.removeByIndex(2, 1)
Sheet.Columns.removeByIndex(6, 4)
end sub
Sub SpostaDatiDa_C_a_F
doc=thiscomponent
Sh1 = Doc.Sheets(0)
c = Sh1.createCursor
c.gotoEndOfUsedArea(false)
UltimaRiga = c.RangeAddress.EndRow
For Riga = 1 to UltimaRiga
Sh1.getCellByPosition(6, Riga).string = Sh1.getCellByPosition(2, Riga).string
Sh1.getCellByPosition(2, Riga).string = "PROVA"
Next Riga
End SubLibreoffice 2.2.3 con MacOS 10.4
Re: semplicemente copia/scambia una colonna su un'altra
come mai non funziona?
credo di far casino nell' appendere le due macro...in effetti trovo difficile come si gestiscono le macro e dove salvarle.
..
credo di far casino nell' appendere le due macro...in effetti trovo difficile come si gestiscono le macro e dove salvarle.
..
Libreoffice 2.2.3 con MacOS 10.4
Re: semplicemente copia/scambia una colonna su un'altra
neanche a me funziona, allega un file con la situazione iniziale e quella desiderat
-------------------
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: semplicemente copia/scambia una colonna su un'altra
patel li ho gia allegati guarda sopra
prova è come è
prova ok come dovrebbe essere
prova è come è
prova ok come dovrebbe essere
Libreoffice 2.2.3 con MacOS 10.4
Re: semplicemente copia/scambia una colonna su un'altra
allora funziona perfettamente, ti allego il file con la macro, così vedi dove deve stare
- Allegati
-
- prova(1).ods
- (11.83 KiB) Scaricato 125 volte
-------------------
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: semplicemente copia/scambia una colonna su un'altra
Puoi editare la tua macro con le dovute accortezze e farne una sola o in alternativa utilizzare l'istruzione "CALL NomeDellaMacroDaFarEseguire" da inserire prima della riga "END SUB" della tua macro come segue.cater58 ha scritto:questa macro deve essere aggiunta ad una esistente che ho gia realizzato io ... per aggiungerla basta inserire le istruzioni nella precedente macro?
Così in risposta al tuo primo quesitocater58 ha scritto:a macro che ho gia fatto cancella delle colonne inutili.
a questa macro andrebbe aggiunte le istruzione per fare in modo che due colonne si scambino di posizione (quindi la colonna 2 deve andare al posto della 5 e viceversa)
Codice: Seleziona tutto
REM ***** BASIC *****
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
REM CANCELLA COLONNE INDESIDERATE
sub main
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
Doc = ThisComponent
Sheet = Doc.Sheets(0)
Sheet.Columns.removeByIndex(0, 6)
Sheet.Columns.removeByIndex(1, 1)
Sheet.Columns.removeByIndex(2, 1)
Sheet.Columns.removeByIndex(6, 4)
call SpostaDatiDa_C_a_F '<<<<<<=====questa riga richiama l'altra macro =======
end sub
Sub SpostaDatiDa_C_a_F
doc=thiscomponent
Sh1 = Doc.Sheets(0)
c = Sh1.createCursor
c.gotoEndOfUsedArea(false)
UltimaRiga = c.RangeAddress.EndRow
For Riga = 1 to 3 'UltimaRiga
DatoCella = Sh1.getCellByPosition(6, Riga).string
Sh1.getCellByPosition(6, Riga).string = Sh1.getCellByPosition(2, Riga).string
Sh1.getCellByPosition(2, Riga).string = DatoCella
Next Riga
End Sub
Così in risposta alla tua seconda esigenza.cater58 ha scritto:in pratica:
1) i dati sotto la colonna comments devono andare sotto la colonna location - ma le caselle dove c'e' scritto comment e location (le prime caselle delle colonne) devono rimanere dove sono senza modifiche
2) i dati della colonna comments devono riportare TUTTI una steinga (es "Prova"
questo è quanto ...
Codice: Seleziona tutto
REM ***** BASIC *****
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
REM CANCELLA COLONNE INDESIDERATE
sub main
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
Doc = ThisComponent
Sheet = Doc.Sheets(0)
Sheet.Columns.removeByIndex(0, 6)
Sheet.Columns.removeByIndex(1, 1)
Sheet.Columns.removeByIndex(2, 1)
Sheet.Columns.removeByIndex(6, 4)
call SpostaDatiDa_C_a_F '<<<<<<=====questa riga richiama l'altra macro =======
end sub
Sub SpostaDatiDa_C_a_F
doc=thiscomponent
Sh1 = Doc.Sheets(0)
c = Sh1.createCursor
c.gotoEndOfUsedArea(false)
UltimaRiga = c.RangeAddress.EndRow
For Riga = 1 to UltimaRiga
Sh1.getCellByPosition(6, Riga).string = Sh1.getCellByPosition(2, Riga).string
Sh1.getCellByPosition(2, Riga).string = "PROVA"
Next Riga
End Sub
Re: semplicemente copia/scambia una colonna su un'altra
Codice: Seleziona tutto
REM ***** BASIC *****
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
REM CANCELLA COLONNE INDESIDERATE
sub main
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
Doc = ThisComponent
Sheet = Doc.Sheets(0)
Sheet.Columns.removeByIndex(0, 6)
Sheet.Columns.removeByIndex(1, 1)
Sheet.Columns.removeByIndex(2, 1)
Sheet.Columns.removeByIndex(6, 4)
call SpostaDatiDa_C_a_F '<<<<<<=====questa riga richiama l'altra macro =======
end sub
call inserisce_prova
end sub
end sub (della main)
Sub SpostaDatiDa_C_a_F
doc=thiscomponent
Sh1 = Doc.Sheets(0)
c = Sh1.createCursor
c.gotoEndOfUsedArea(false)
UltimaRiga = c.RangeAddress.EndRow
For Riga = 1 to 3 'UltimaRiga
DatoCella = Sh1.getCellByPosition(6, Riga).string
Sh1.getCellByPosition(6, Riga).string = Sh1.getCellByPosition(2, Riga).string
Sh1.getCellByPosition(2, Riga).string = DatoCella
Next Riga
End Sub
Sub inserisce_prova
doc=thiscomponent
Sh1 = Doc.Sheets(0)
c = Sh1.createCursor
c.gotoEndOfUsedArea(false)
UltimaRiga = c.RangeAddress.EndRow
For Riga = 1 to UltimaRiga
Sh1.getCellByPosition(6, Riga).string = Sh1.getCellByPosition(2, Riga).string
Sh1.getCellByPosition(2, Riga).string = "PROVA"
Next Riga
end sub
Ultima modifica di cater58 il giovedì 14 settembre 2017, 19:22, modificato 1 volta in totale.
Libreoffice 2.2.3 con MacOS 10.4
Re: semplicemente copia/scambia una colonna su un'altra
ho capito bene?
... sicuro no.
... sicuro no.
Libreoffice 2.2.3 con MacOS 10.4
Re: semplicemente copia/scambia una colonna su un'altra
Codice: Seleziona tutto
REM ***** BASIC *****
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
sub main
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
Doc = ThisComponent
Sheet = Doc.Sheets(0)
Sheet.Columns.removeByIndex(0, 6)
Sheet.Columns.removeByIndex(1, 1)
Sheet.Columns.removeByIndex(2, 1)
Sheet.Columns.removeByIndex(6, 4)
call SpostaDatiDa_C_a_F
call inserisce_prova
end sub
Sub SpostaDatiDa_C_a_F
doc=thiscomponent
Sh1 = Doc.Sheets(0)
c = Sh1.createCursor
c.gotoEndOfUsedArea(false)
UltimaRiga = c.RangeAddress.EndRow
For Riga = 1 to 3 'UltimaRiga
DatoCella = Sh1.getCellByPosition(6, Riga).string
Sh1.getCellByPosition(6, Riga).string = Sh1.getCellByPosition(2, Riga).string
Sh1.getCellByPosition(2, Riga).string = DatoCella
Next Riga
End Sub
Sub inserisce_prova
doc=thiscomponent
Sh1 = Doc.Sheets(0)
c = Sh1.createCursor
c.gotoEndOfUsedArea(false)
UltimaRiga = c.RangeAddress.EndRow
For Riga = 1 to UltimaRiga
Sh1.getCellByPosition(6, Riga).string = Sh1.getCellByPosition(2, Riga).string
Sh1.getCellByPosition(2, Riga).string = "PROVA"
Next Riga
end sub
Ultima modifica di cater58 il giovedì 14 settembre 2017, 19:22, modificato 1 volta in totale.
Libreoffice 2.2.3 con MacOS 10.4
Re: semplicemente copia/scambia una colonna su un'altra
questa funziona ... l'unica cosa è che alla fine della procedura mi pare cancelli il valore delle prime tre righe nella colonna location ...
Libreoffice 2.2.3 con MacOS 10.4
Re: semplicemente copia/scambia una colonna su un'altra
questo è il file iniziale
- Allegati
-
- corto.ods
- (10.17 KiB) Scaricato 100 volte
Libreoffice 2.2.3 con MacOS 10.4
Re: semplicemente copia/scambia una colonna su un'altra
questo il file dopo la macro (compresa della parte da me fatta dove cancello le colonne inutili)
- Allegati
-
- cortodopomacro.ods
- (8.85 KiB) Scaricato 117 volte
Libreoffice 2.2.3 con MacOS 10.4
Re: semplicemente copia/scambia una colonna su un'altra
IL FILE CORTO è IN EFFETTI IL PRIMO FILE DA CUI IL LAVORO DEVE PARTIRE
applicando la macro:
- cancella delle colonne
- spostamento le due colonne comments e location
- inserisce "prova" nella colonna comments
... ma io vedo i tre valori delle tre prime righe al campo location sbiancate, e non lo dovrebbe fare
brw : grazie ora ho capito come appendere le macro!!! -
applicando la macro:
- cancella delle colonne
- spostamento le due colonne comments e location
- inserisce "prova" nella colonna comments
... ma io vedo i tre valori delle tre prime righe al campo location sbiancate, e non lo dovrebbe fare
brw : grazie ora ho capito come appendere le macro!!! -
Libreoffice 2.2.3 con MacOS 10.4
Re: semplicemente copia/scambia una colonna su un'altra
@carter58, proprio non vuoi mettere i tag al codice delle macro?
Serve a non allungare troppo i post. Quindi sei invitato formalmente a farlo. Grazie.
Edit: anche sui post già inseriti, modificandoli.
Edit: anche sui post già inseriti, modificandoli.
charlie
macOS 15.5 Sequoia: Open Office 4.1.16 - LibreOffice 25.8
http://www.charlieopenoffice.altervista.org
macOS 15.5 Sequoia: Open Office 4.1.16 - LibreOffice 25.8
http://www.charlieopenoffice.altervista.org



