Macro importazione colonne

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
luca733
Messaggi: 41
Iscritto il: martedì 19 settembre 2017, 12:32

Macro importazione colonne

Messaggio da luca733 »

Salve a tutti.Ho bisogno di un aiuto per realizzare una macro che mi permetta di importare delle determinate colonne da un file per poi eleborarle nel mio gestionale.Mi spiego meglio facendo un esempio.
Nel mio file.ods devo importare sempre le colonne "H-J-O-AC-AG" dal file di partenza "dati.xls"
Oltre all'importazione di queste colonne dovrei avere la possibilità di filtrare la colonna "AG"
Non ho nessuna esperienza nella realizzazione di macro e chiedo quindi aiuto a qualcuno
Allego il file "dati.xls" di partenza
Grazie infinite a chi mi puo aiutare
Allegati
dati.xls
(20.5 KiB) Scaricato 31 volte
openoffice 4.1.3 windows seven
Avatar utente
lucky63
Volontario molto attivo
Volontario molto attivo
Messaggi: 3093
Iscritto il: martedì 18 maggio 2010, 17:01

Re: Macro importazione colonne

Messaggio da lucky63 »

.
N.B.: Nella macro va adeguato il percorso del file esterno.
.

Codice: Seleziona tutto

Sub ImportaDatiDaColonneDiInteresseDelFileEsternoXls
Rem Link del quesito: https://forum.openoffice.org/it/forum/viewtopic.php?t=12540
Rem ----------------------------------------------------------------------------------------------------------------------------
Rem Dichiara vettore come nuova istanza associandogli proprietà Hidden/Nascosto
Rem Non farà mostrare la finestra di caricamento del file di origine
Dim Dummy(0) as New com.sun.star.beans.PropertyValue
Dummy(0).Name = "Hidden" 
Dummy(0).Value = True ' False x visualizzarlo
PercorsoDelFile = "file:///home/NomeUtente/Scaricati/dati.xls"  ''' PERCORSO DA ADEGUARE ALLE PROPRIE ESIGENZE
FileDati = StarDesktop.loadComponentFromURL (PercorsoDelFile, "_blank",0, Dummy() ) 'Adeguare il percorso
FoglioDeiDati = FileDati.Sheets(0) 'PrimoFoglio
Rem ----------------------------------------------------------------------------------------------------------------------------
Doc = ThisComponent
FoglioDiLavoro = Doc.Sheets(0) 'PrimoFoglio

Rem Verifica numero ultima riga dati in foglio dati utili esterni (File dati.xls)
CursoreFd = FoglioDeiDati.createCursor
CursoreFd.GotoEndOfUsedArea(False)
UltimaRigaDatiFd = CursoreFd.RangeAddress.EndRow
'Print UltimaRigaDatiFd ' Test di verifica OK

Rem Verifica numero ultima riga dati nel foglio di lavoro
CursoreFL = FoglioDeiDati.createCursor
CursoreFL.GotoEndOfUsedArea(False)
UltimaRigaDatiFL = CursoreFL.RangeAddress.EndRow
'Print UltimaRigaDatiFL ' Test di verifica OK
'STOP

Rem area dati di interesse in colonna H
RangeDaCopiare = FoglioDeiDati.getCellRangeByName("H2:H" & UltimaRigaDatiFd+1).getDataArray ' range da copiare
RangeDestinazione = FoglioDiLavoro.getCellRangeByName("H2:H" & UltimaRigaDatiFd+1) ' L'area del range di destinazione
RangeDestinazione.setDataArray(RangeDaCopiare) ' Incolla i dati copiati.

Rem area dati di interesse in colonna J
RangeDaCopiare = FoglioDeiDati.getCellRangeByName("J2:J" & UltimaRigaDatiFd+1).getDataArray ' range da copiare
RangeDestinazione = FoglioDiLavoro.getCellRangeByName("J2:J" & UltimaRigaDatiFd+1) ' L'area del range di destinazione
RangeDestinazione.setDataArray(RangeDaCopiare) ' Incolla i dati copiati.

Rem area dati di interesse in colonna O
RangeDaCopiare = FoglioDeiDati.getCellRangeByName("O2:O" & UltimaRigaDatiFd+1).getDataArray ' range da copiare
RangeDestinazione = FoglioDiLavoro.getCellRangeByName("O2:O" & UltimaRigaDatiFd+1) ' L'area del range di destinazione
RangeDestinazione.setDataArray(RangeDaCopiare) ' Incolla i dati copiati.

Rem area dati di interesse in colonna AC
RangeDaCopiare = FoglioDeiDati.getCellRangeByName("AC2:AC" & UltimaRigaDatiFd+1).getDataArray ' range da copiare
RangeDestinazione = FoglioDiLavoro.getCellRangeByName("AC2:AC" & UltimaRigaDatiFd+1) ' L'area del range di destinazione
RangeDestinazione.setDataArray(RangeDaCopiare) ' Incolla i dati copiati.

Rem area dati di interesse in colonna AG
RangeDaCopiare = FoglioDeiDati.getCellRangeByName("AG2:AG" & UltimaRigaDatiFd+1).getDataArray ' range da copiare
RangeDestinazione = FoglioDiLavoro.getCellRangeByName("AG2:AG" & UltimaRigaDatiFd+1) ' L'area del range di destinazione
RangeDestinazione.setDataArray(RangeDaCopiare) ' Incolla i dati copiati.

'FileDati.Close(True) 'Eventuale chiusura file origine dati ... se inizialmente optato per ... Dummy(0).Value = False 

End sub
.
Per poter filtrare in colonna AG il dati importati ti basta impostare un filtro automatico.
.
Allegati
Test - Macro - Importa dati colonne H J O AC AG.ods
(16.22 KiB) Scaricato 36 volte
luca733
Messaggi: 41
Iscritto il: martedì 19 settembre 2017, 12:32

Re: Macro importazione colonne

Messaggio da luca733 »

Perfetto!!
é possibile visualizzare solo le colonne che mi interessano ed eliminare quelle vuote?
grazie mille
openoffice 4.1.3 windows seven
Rispondi