IMPORTARE FILE TXT IN 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!