IMPORTARE FILE TXT IN EXCEL
Hai un problema con Excel? 
IMPORTARE FILE TXT IN EXCEL
di peter17 (utente non iscritto) data: 13/07/2017 12:59:49
Salve a tutti
vi scrivo perchè avrei bisogno di una mano per scrivere una macro, premetto che le mie competenze in vba sono davvero minime, che mi risolva il seguente problema: esportazione dati da file txt in foglio excel e successivo confronto tra il foglio cosi creato ed un altro esistente che dovrei opportunamente aggiornare
con i dati del foglio excel ottenuto in precedenza. Vi scrivo un esempio di quello che vorrei ottenere : parto da un foglio txt cosi formattato:
11:13;12/07/2017;IN;000001;25
11:15;12/07/2017;IN;000002;100
10:13;09/07/2017;IN;000006;70
09:10;07/07/2017;OUT;000008;200
11:13;12/07/2017;IN;000001;25
18:13;05/07/2017;OUT;000001;25
18:15;03/07/2017;OUT;000001;25
18:12;01/07/2017;IN;000001;25
18:19;02/07/2017;IN;000001;25
La macro dovrebbe esportare i dati di questo file in un foglio excel che chiamo ad esempio "table1" che ha sulla prima riga le seguenti intestazioni:
DATA ORA FLUSSO ITEM NrITEM
perciò il risultato dovrebbe essere il seguente :
DATA ORA FLUSSO ITEM NrITEM
11:13 12/07/2017 IN 000001 25
11:15 12/07/2017 IN 000002 100
10:13 20/07/2017 IN 000006 70
09:10 20/07/2017 OUT 000008 200
11:13 22/07/2017 IN 000001 25
18:13 23/07/2017 OUT 000001 25
18:15 24/07/2017 OUT 000001 25
18:12 25/07/2017 IN 000001 25
18:19 30/07/2017 IN 000001 25
una volta ottenuto questo risultato la macro dovrebbe confrontare questa tabella con un'altra tabella esistente table2(che dovra prima essere backuppata con nome ggmmaaaa_table2) e poi confrontata con la table1 in modo da appendere nelle colonne di table2 i valori delle colonne della table1 aventi la stessa intestazione: esempio la mia tabella table2 ha in generale un numero di colonne e righe diverse rispetto alla table1
table2
VENDITORE DATA ORA FLUSSO ITEM DESCRIZIONE NrITEM
LUCA 15:13 12/05/2017 IN 000001 ROSSO 30
STEFANO 16:15 12/05/2017 IN 000002 VERDE 40
ANTONIO 17:13 09/05/2017 IN 000006 BIANCO 50
LUISA 18:10 07/05/2017 OUT 000008 ARANCIO 60
GLORIA 19:13 12/05/2017 IN 000001 ROSSO 75
GIULIA 20:13 05/05/2017 OUT 000001 ROSSO 65
ANDREA 20:15 03/06/2017 OUT 000001 ROSSO 200
ROCCO 21:12 01/06/2017 IN 000001 ROSSO 100
MARCO 22:19 02/06/2017 IN 000001 ROSSO 250
IL risultato finale della macro dovrà essere il seguente :
VENDITORE DATA ORA FLUSSO ITEM DESCRIZIONE NrITEM
LUCA 15:13 12/05/2017 IN 000001 ROSSO 30
STEFANO 16:15 12/05/2017 IN 000002 VERDE 40
ANTONIO 17:13 09/05/2017 IN 000006 BIANCO 50
LUISA 18:10 07/05/2017 OUT 000008 ARANCIO 60
GLORIA 19:13 12/05/2017 IN 000001 ROSSO 75
GIULIA 20:13 05/05/2017 OUT 000001 ROSSO 65
ANDREA 20:15 03/06/2017 OUT 000001 ROSSO 200
ROCCO 21:12 01/06/2017 IN 000001 ROSSO 100
MARCO 22:19 02/06/2017 IN 000001 ROSSO 250
11:13 12/07/2017 IN 000001 25
11:15 12/07/2017 IN 000002 100
10:13 20/07/2017 IN 000006 70
09:10 20/07/2017 OUT 000008 200
11:13 22/07/2017 IN 000001 25
18:13 23/07/2017 OUT 000001 25
18:15 24/07/2017 OUT 000001 25
18:12 25/07/2017 IN 000001 25
18:19 30/07/2017 IN 000001 25
vi ringrazio per l'attenzione e tutti coloro che mi vorranno dare un aiuto.
di patel data: 13/07/2017 13:11:51
allega i 2 file
di peter17 (utente non iscritto) data: 13/07/2017 13:50:21
Patel grazie per il supporto
di patel data: 13/07/2017 18:35:23
prova questa
Sub importa()
fname = "F:Downloadinput.txt" ' <<<<< da modificare
Set wb = ThisWorkbook
Sheets("table2").Activate
LR = Cells(Rows.Count, "A").End(xlUp).Row + 1
Workbooks.OpenText Filename:=fname, DataType:=xlDelimited, semicolon:=True
ActiveSheet.UsedRange.Copy wb.Sheets("table2").Range("B" & LR)
ActiveWorkbook.Close
LR2 = Cells(Rows.Count, "B").End(xlUp).Row
Range("F" & LR & ":F" & LR2).Cut Range("G" & LR)
Range("E" & LR & ":E" & LR2).NumberFormat = "00000"
End Sub
|
di peter17 (utente non iscritto) data: 14/07/2017 09:45:50
Grazie Patel gentilissimo ha funzionato : ora mi tocca solo capire come poter fare il backup della table2 prima di aggiungerci le colonne della table1 andando magari a salvare il foglio nella forma ggmmaaa_nomefoglio. Con la tua macro non viene creata nemmeno la table1 di appoggio: l'import del file txt viene direttamente accodato alle corrispodenti colonne della table2.
di patel data: 14/07/2017 11:52:32
a cosa ti serve salvare la tabella precedente ?, mica viene sovrascritta, mi sembra inutile, però si potrebbe inserire la data a fianco della tabella importata
di peter17 (utente non iscritto) data: 14/07/2017 14:04:13
Patel mi sono espresso male: vorrei fare un back_up di tutto il file excel : nel mio caso del file Prova.xlsn che dovrebbe essere backuppato come ggmmaaaa_Prova.xlsn
di patel data: 14/07/2017 18:34:59
quindi un normale salva con nome ?
di Peter17 (utente non iscritto) data: 16/07/2017 20:11:13
Si va bene un normale salva con il nome più data nel formato che ti avevo indicato.
Grazie
di patel data: 17/07/2017 11:51:52
modifica il percorso di salvataggio
Sub saveAndBackup()
ThisWorkbook.Save
CurrentFile = ThisWorkbook.FullName
fdate = Format(Now(), "ddmmyyyy")
filenam = "F:Download" & fdate & "_prova.xlsm"
ThisWorkbook.SaveAs Filename:=filenam
Set ActBook = ActiveWorkbook
Workbooks.Open CurrentFile
ActBook.Close
End Sub |
di peter17 (utente non iscritto) data: 19/07/2017 21:37:52
ciao Patel scusa per il ritardo ma solo oggi sono riuscito a provarla: grazie mille era proprio quello che cercavo .
grazie per il supporto!
Vuoi Approfondire?