Pagina 1 di 1
Esportazione CSV solo righe selezionate
Inviato: venerdì 19 agosto 2022, 16:38
da Aluc
Ciao a tutti,
qualcuno mi sa dire se di un documento .ods è possibile salvare in CSV solo alcune righe selezionate e non l'intero documento?
Attualmente salvo un unico csv poi lo apro da blocco note e lo salvo in diversi csv ma vorrei automatizzare l'operazione.
Grazie a chi mi potrà aiutare
Aluc
Re: Esportazione CSV solo righe selezionate
Inviato: venerdì 19 agosto 2022, 20:25
da patel
Si può fare con una macro, ad esempio questa
Codice: Seleziona tutto
Sub CsvSave
Doc = ThisComponent
oSheet=thiscomponent.getcurrentcontroller.activesheet
oRange = Doc.getCurrentSelection()
startcol= oRange.RangeAddress.StartColumn
endcol= oRange.RangeAddress.EndColumn
startrow= oRange.RangeAddress.StartRow
endrow= oRange.RangeAddress.EndRow
nomefile="C:\Download\PROVA.csv" ' percorso del file da salvare
n = FreeFile()
Open nomefile For output As #n
for row=startrow to endrow
oText = ""
for col=startcol to endcol
CellText = oSheet.getCellByPosition(col, row).String
if col = endcol then
oText =oText & CellText
else
oText =oText & CellText & ";" ' separatore può essere anche virgola
end if
next
print #n, oText
next
Close #n
End Sub
Re: Esportazione CSV solo righe selezionate
Inviato: sabato 20 agosto 2022, 8:26
da cwolan
Una piccola nota ovvia:
la macro non funzionerà per la selezione non contigua.
Re: Esportazione CSV solo righe selezionate
Inviato: sabato 20 agosto 2022, 10:40
da Aluc
La macro funziona perfettamente se si fa un'unico salvataggio in csv, se si ripete l'esecuzione della macro questa sovrascrive il file precedente salvando sempre come prova.csv
Servirebbe dunque che potessero essere salvati files con nomi progressivi es: prova1.csv, prova2.csv, prova3.csv ecc. senza che siano sovrascritti , questo perchè dello stesso documento devo fare diverse selezioni e salvare diversi csv.
E' possibile?
Grazie per il tuo aiuto
Re: Esportazione CSV solo righe selezionate
Inviato: sabato 20 agosto 2022, 13:30
da patel
Puoi dedicare una cella al numero progressivo ? se sì
Codice: Seleziona tutto
Sub CsvSave2
Doc = ThisComponent
oSheet=thiscomponent.getcurrentcontroller.activesheet
oRange = Doc.getCurrentSelection()
startcol= oRange.RangeAddress.StartColumn
endcol= oRange.RangeAddress.EndColumn
startrow= oRange.RangeAddress.StartRow
endrow= oRange.RangeAddress.EndRow
filenum= oSheet.getCellRangeByName("K1").value 'K1 cella di servizio
fpath="C:\Download\"
nomefile=fpath & "PROVA" & filenum & ".csv"
n = FreeFile()
Open nomefile For output As #n
for row=startrow to endrow
oText = ""
for col=startcol to endcol
CellText = oSheet.getCellByPosition(col, row).String
if col = endcol then
oText =oText & CellText
else
oText =oText & CellText & ";"
end if
next
print #n, oText
next
oSheet.getCellRangeByName("K1").value = filenum + 1
Close #n
End Sub
Re: Esportazione CSV solo righe selezionate
Inviato: sabato 20 agosto 2022, 18:23
da patel
cwolan ha scritto: ↑sabato 20 agosto 2022, 8:26
Una piccola nota ovvia:
la macro non funzionerà per la selezione non contigua.
Si può fare anche in caso di selezione non contigua, ma se non serve è inutile complicare il codice.
Re: Esportazione CSV solo righe selezionate
Inviato: lunedì 22 agosto 2022, 12:58
da Aluc
La macro funziona perfettamente, non mi serve la seleziona non contigua ma mi sarebbe utile però che nel salvataggio dei vari CSV fosse presente sempre la riga 1 perchè ci sono le intestazioni dei nomi delle colonne, se è complesso aggiungerlo alla macro lo incollo a mano.
Grazie per il tuo aiuto