[RISOLTO] macro Copia celle visibili e valori di incolla
[RISOLTO] macro Copia celle visibili e valori di incolla
saluti
Sto cercando una macro per copiare le celle filtrate per filtro automatico nel foglio di lavoro 1, cioè celle visibili e Incolla automaticamente valori non formattati nel foglio di lavoro 2
a causa della grande quantità di linee e celle filtrate, è meglio fare operazioni con Macro
Sto già provando a fare Macro, ma non ottengo la perfezione, quindi chiedo aiuto per te
Dettagli del problema
nel foglio di lavoro 1 ha un filtro automatico dalla colonna A alla colonna Z, alcune colonne vengono filtrate
la Macro deve copiare le celle visibili dalla colonna A alla colonna E, incolla i valori nella prima cella vuota della colonna A nel foglio di lavoro 2
tornare al foglio di lavoro 1 e copiare le celle visibili dalla colonna "I" alla colonna "L" e incollare i valori nella prima cella vuota della colonna F in foglio di lavoro 2
tornare al foglio di lavoro 1 e copiare le celle visibili dalla colonna "U" alla colonna W e incollare i valori nella prima cella vuota della colonna "J" nel foglio di lavoro 2
infine, tornare al foglio di lavoro 1 e annullare tutti i filtri, ovvero pulire i filtri
Link Ho cercato di aiutare
https://forum.openoffice.org/en/forum/v ... 5&p=438954
https://forum.openoffice.org/en/forum/v ... 20&t=58810
Abbraccia gli amici
Sto cercando una macro per copiare le celle filtrate per filtro automatico nel foglio di lavoro 1, cioè celle visibili e Incolla automaticamente valori non formattati nel foglio di lavoro 2
a causa della grande quantità di linee e celle filtrate, è meglio fare operazioni con Macro
Sto già provando a fare Macro, ma non ottengo la perfezione, quindi chiedo aiuto per te
Dettagli del problema
nel foglio di lavoro 1 ha un filtro automatico dalla colonna A alla colonna Z, alcune colonne vengono filtrate
la Macro deve copiare le celle visibili dalla colonna A alla colonna E, incolla i valori nella prima cella vuota della colonna A nel foglio di lavoro 2
tornare al foglio di lavoro 1 e copiare le celle visibili dalla colonna "I" alla colonna "L" e incollare i valori nella prima cella vuota della colonna F in foglio di lavoro 2
tornare al foglio di lavoro 1 e copiare le celle visibili dalla colonna "U" alla colonna W e incollare i valori nella prima cella vuota della colonna "J" nel foglio di lavoro 2
infine, tornare al foglio di lavoro 1 e annullare tutti i filtri, ovvero pulire i filtri
Link Ho cercato di aiutare
https://forum.openoffice.org/en/forum/v ... 5&p=438954
https://forum.openoffice.org/en/forum/v ... 20&t=58810
Abbraccia gli amici
Ultima modifica di chimico il mercoledì 28 novembre 2018, 17:30, modificato 5 volte in totale.
LibreOffice 5.4.4.2 no Windows 7
Re: macro Copia celle visibili e valori di incolla
Ho fatto delle ricerche e ho trovato un ottimo esempio di mr. "patel" sul seguente link
nome macro: sub filtracolonna ...
http://ooo-forums.apache.org/it/forum/v ... 94&p=49916
puoi aiutarmi ad adattare l'esempio di mr. "patel" al mio problema?
abbracci
nome macro: sub filtracolonna ...
http://ooo-forums.apache.org/it/forum/v ... 94&p=49916
puoi aiutarmi ad adattare l'esempio di mr. "patel" al mio problema?
abbracci
LibreOffice 5.4.4.2 no Windows 7
Re: macro Copia celle visibili e valori di incolla
visto che hai letto quell'esempio dovresti aver notato che per prima cosa ho chiesto un file di esempio
-------------------
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: macro Copia celle visibili e valori di incolla
saluti sr. patel ,
segue un allegato di file di esempio
Grazie mille per la tua attenzione.
segue un allegato di file di esempio
Grazie mille per la tua attenzione.
- Allegati
-
- Visibile.ods
- (25.72 KiB) Scaricato 166 volte
LibreOffice 5.4.4.2 no Windows 7
Re: macro Copia celle visibili e valori di incolla
prova questa
Codice: Seleziona tutto
sub copiafiltro
oDoc = ThisComponent
sheet1= thiscomponent.sheets(0)
sheet2= thiscomponent.sheets(1)
oCursor = Sheet1.createcursor
oCursor.gotoendofusedarea(false)
nEndrow = oCursor.rangeaddress.Endrow
rng=sheet1.getcellrangebyPosition(0,0,4,nEndrow)
oRanges = rng.queryVisibleCells()
oCell = Sheet2.getcellrangebyName("A1") ' destinazione
oTargetRange = copyTiledRanges(oDoc, oRanges, oCell, bValues)
sheet2.Columns.OptimalWidth = True
rng=sheet1.getcellrangebyPosition(8,0,11,nEndrow)
oRanges = rng.queryVisibleCells()
oCell = Sheet2.getcellrangebyName("F1") ' destinazione
oTargetRange = copyTiledRanges(oDoc, oRanges, oCell, bValues)
sheet2.Columns.OptimalWidth = True
rng=sheet1.getcellrangebyPosition(20,0,22,nEndrow)
oRanges = rng.queryVisibleCells()
oCell = Sheet2.getcellrangebyName("J1") ' destinazione
oTargetRange = copyTiledRanges(oDoc, oRanges, oCell, bValues)
sheet2.Columns.OptimalWidth = True
'---------- ripristina il foglio1
' oFilterDesc = Sheet1.createFilterDescriptor(True)
' Sheet1.filter(oFilterDesc)
end sub
Function copyTiledRanges(oDoc,oRanges,oTopLeft, bVal As Boolean)
Dim oTargetSheet, oEnum, aTgt, oTgtRg, oNext, aNext, aPrev, iRow&, bCalc As Boolean
Dim oResult as New com.sun.star.table.CellRangeAddress
bCalc = oDoc.isAutomaticCalculationEnabled()
oDoc.enableAutomaticCalculation(False)
aTgt = oTopLeft.getCellAddress()
iRow = aTgt.Row
oTargetSheet = oDoc.getSheets.getByIndex(aTgt.Sheet)
oResult.Sheet = aTgt.Sheet
oResult.StartColumn = aTgt.Column
oResult.StartRow = aTgt.Row
oEnum = oRanges.createEnumeration()
while oEnum.hasMoreElements()
oNext = oEnum.nextElement()
aNext = oNext.getRangeAddress()
if not isUnoStruct(aPrev) then aPrev = aNext
REM SheetCellRanges-collections are sorted ascending by StartColumn and StartRow
REM therefore we go down column by column
If aNext.StartColumn > aPrev.StartColumn then
'start new column at top row, right of previous range
aTgt.Column = aTgt.Column + aPrev.EndColumn - aPrev.StartColumn +1
aTgt.Row = iRow
elseIf aNext.StartRow > aPrev.StartRow then
'target cell below the previous range in same column
aTgt.Row = aTgt.Row + aPrev.EndRow - aPrev.StartRow +1
endif
oTargetSheet.copyRange(aTgt, aNext)
if bVal Then
oTgtRg = oTargetSheet.getCellRangeByPosition( _
aTgt.Column, aTgt.Row, _
aTgt.Column + aNext.EndColumn - aNext.StartColumn, _
aTgt.Row + aNext.EndRow - aNext.StartRow _
)
oTgtRg.setDataArray(oNext.getDataArray())
endif
aPrev = aNext
wend
oResult.EndColumn = aTgt.Column + aNext.EndColumn - aNext.StartColumn
oResult.EndRow = aTgt.Row + aNext.EndRow - aNext.StartRow
oDoc.enableAutomaticCalculation(bCalc)
copyTiledRanges = oTargetSheet.getCellRangeByPosition( _
oResult.StartColumn, oResult.StartRow, oResult.EndColumn, oResult.EndRow )
End Function
-------------------
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: macro Copia celle visibili e valori di incolla
Ciao @chimico e benvenuto sul forum.
Se ti vuoi presentare puoi farlo qui: viewforum.php?f=16
Per una panoramica delle regole del forum puoi consultare il Manuale di sopravvivenza: http://forum.openoffice.org/it/forum/vi ... hp?f=1&t=2
Buon proseguimento.
Se ti vuoi presentare puoi farlo qui: viewforum.php?f=16
Per una panoramica delle regole del forum puoi consultare il Manuale di sopravvivenza: http://forum.openoffice.org/it/forum/vi ... hp?f=1&t=2
Buon proseguimento.
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: macro Copia celle visibili e valori di incolla
sr. patel ,
ottimo il tuo codice, sono grato ora per il tuo aiuto
osservazione
manca solo una cosa, la macro ha bisogno di incollare i valori nella prima cella "vuota" della colonna nel foglio di lavoro 2, così posso salvare una storia nel foglio di lavoro 2
la macro corrente ha incollato i valori su, cioè incollati sopra i valori numerici che erano lì
Dovevo incollare sotto i valori numerici, cioè nella prima cella "vuota" che trovo mentre sfoglio i dati che esistono nella colonna, quindi salverò una cronologia dei valori filtrati
è possibile farlo nella macro corrente?
segue il foglio di calcolo mentre la macro scorreva
Grazie mille per la tua attenzione.
amici abbracci
ottimo il tuo codice, sono grato ora per il tuo aiuto
osservazione
manca solo una cosa, la macro ha bisogno di incollare i valori nella prima cella "vuota" della colonna nel foglio di lavoro 2, così posso salvare una storia nel foglio di lavoro 2
la macro corrente ha incollato i valori su, cioè incollati sopra i valori numerici che erano lì
Dovevo incollare sotto i valori numerici, cioè nella prima cella "vuota" che trovo mentre sfoglio i dati che esistono nella colonna, quindi salverò una cronologia dei valori filtrati
è possibile farlo nella macro corrente?
segue il foglio di calcolo mentre la macro scorreva
Grazie mille per la tua attenzione.
amici abbracci
- Allegati
-
- Visibile.ods
- (31.74 KiB) Scaricato 103 volte
LibreOffice 5.4.4.2 no Windows 7
Re: macro Copia celle visibili e valori di incolla
modifica così la prima sub
Codice: Seleziona tutto
sub copiaFiltro
oDoc = ThisComponent
sheet1= thiscomponent.sheets(0)
sheet2= thiscomponent.sheets(1)
oCursor = Sheet1.createcursor
oCursor.gotoendofusedarea(false)
nEndrow = oCursor.rangeaddress.Endrow
oCursor = Sheet2.createcursor
oCursor.gotoendofusedarea(false)
LR2 = oCursor.rangeaddress.Endrow + 1 ' +2 per lasciare una riga vuota
rng=sheet1.getcellrangebyPosition(0,0,4,nEndrow)
oRanges = rng.queryVisibleCells()
oCell = Sheet2.getcellrangebyName("A" & LR2) ' destinazione
oTargetRange = copyTiledRanges(oDoc, oRanges, oCell, bValues)
sheet2.Columns.OptimalWidth = True
rng=sheet1.getcellrangebyPosition(8,0,11,nEndrow)
oRanges = rng.queryVisibleCells()
oCell = Sheet2.getcellrangebyName("F" & LR2) ' destinazione
oTargetRange = copyTiledRanges(oDoc, oRanges, oCell, bValues)
sheet2.Columns.OptimalWidth = True
rng=sheet1.getcellrangebyPosition(20,0,22,nEndrow)
oRanges = rng.queryVisibleCells()
oCell = Sheet2.getcellrangebyName("J" & LR2) ' destinazione
oTargetRange = copyTiledRanges(oDoc, oRanges, oCell, bValues)
sheet2.Columns.OptimalWidth = True
'---------- ripristina il foglio1
' oFilterDesc = Sheet1.createFilterDescriptor(True)
' Sheet1.filter(oFilterDesc)
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
Re: macro Copia celle visibili e valori di incolla
Sto inviando il file allegato con i nuovi risultati nel foglio di lavoro 2
sta incollando le intestazioni delle intestazioni sull'ultima riga
osservazione
Non si dovrebbero copiare intestazioni dal foglio di lavoro 1
copia solo dalla riga 2 in basso
non copiare i titoli del foglio di lavoro 1
amici abbracci
sta incollando le intestazioni delle intestazioni sull'ultima riga
osservazione
Non si dovrebbero copiare intestazioni dal foglio di lavoro 1
copia solo dalla riga 2 in basso
non copiare i titoli del foglio di lavoro 1
amici abbracci
- Allegati
-
- Visibile.ods
- (31.84 KiB) Scaricato 132 volte
LibreOffice 5.4.4.2 no Windows 7
Re: macro Copia celle visibili e valori di incolla
Codice: Seleziona tutto
sub copiaFiltro
oDoc = ThisComponent
sheet1= thiscomponent.sheets(0)
sheet2= thiscomponent.sheets(1)
oCursor = Sheet1.createcursor
oCursor.gotoendofusedarea(false)
nEndrow = oCursor.rangeaddress.Endrow
oCursor = Sheet2.createcursor
oCursor.gotoendofusedarea(false)
LR2 = oCursor.rangeaddress.Endrow + 1 ' +2 per lasciare una riga vuota
rng=sheet1.getcellrangebyPosition(0,1,4,nEndrow) '<<<<<<<<<<<
oRanges = rng.queryVisibleCells()
oCell = Sheet2.getcellrangebyName("A" & LR2) ' destinazione
oTargetRange = copyTiledRanges(oDoc, oRanges, oCell, bValues)
sheet2.Columns.OptimalWidth = True
rng=sheet1.getcellrangebyPosition(8,1,11,nEndrow)'<<<<<<<<<<<
oRanges = rng.queryVisibleCells()
oCell = Sheet2.getcellrangebyName("F" & LR2) ' destinazione
oTargetRange = copyTiledRanges(oDoc, oRanges, oCell, bValues)
sheet2.Columns.OptimalWidth = True
rng=sheet1.getcellrangebyPosition(20,1,22,nEndrow)'<<<<<<<<<<<
oRanges = rng.queryVisibleCells()
oCell = Sheet2.getcellrangebyName("J" & LR2) ' destinazione
oTargetRange = copyTiledRanges(oDoc, oRanges, oCell, bValues)
sheet2.Columns.OptimalWidth = True
'---------- ripristina il foglio1
' oFilterDesc = Sheet1.createFilterDescriptor(True)
' Sheet1.filter(oFilterDesc)
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
Re: macro Copia celle visibili e valori di incolla
[Risolto]
sr. Patel ,
codice eccellente, sembrava fantastico, funzionava come dovrebbe
grazie amico per ora per il grande aiuto
abbracci
sr. Patel ,
codice eccellente, sembrava fantastico, funzionava come dovrebbe
grazie amico per ora per il grande aiuto
abbracci
LibreOffice 5.4.4.2 no Windows 7