Condividi tramite

Importare File Txt di una cartella e inserirli in unica pagina Excel sovrascrivendo i dati doppioni

Anonimo
2017-01-31T10:26:52+00:00

Salve,

ho una serie di file txt in una cartella e avrei bisogn odi una macro che importa tutti questi file all'interno di un unico foglio, uno sotto l'altro sovrascrivendo i dati doppioni.

Ho una macro, ma il problema che importa i dati ma poi ad ogni foglio importato shifta i dati a destra, occupando cosi il foglio in larghetta anziché in verticale...e non sovrascrive i doppioni...

il codice che ho provato e' il seguente:

Sub Import2626()

Sheets("26-26").Select

    'Range("A1").Select

Dim myPath As String

Dim myFile As String

Dim myExtension As String

Dim FldrPicker As FileDialog

Application.ScreenUpdating = False

Application.EnableEvents = False

Application.Calculation = xlCalculationManual

  Set FldrPicker = Application.FileDialog(msoFileDialogFolderPicker)

    With FldrPicker

      .Title = "Select A Target Folder"

      .AllowMultiSelect = False

        If .Show <> -1 Then GoTo NextCode

        myPath = .SelectedItems(1) & ""

    End With

NextCode:

  myPath = myPath

  If myPath = "" Then Exit Sub

  myExtension = "*.txt"

  myFile = Dir(myPath & myExtension)

  Do While myFile <> ""

       'ActiveWorkbook.Worksheets.Add

       'ActiveSheet.Name = Replace(MyFile, ".txt", "")

       myDest = Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Address

      myDest2 = Cells(Rows.Count, "F").End(xlUp).Offset(1, 0).Address

    With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & myPath & myFile, Destination:=Range(myDest)) 'Destination:=Range("$A$1"))

        .Name = ActiveSheet.Name

        .FieldNames = True

        .RowNumbers = False

        .FillAdjacentFormulas = False

        .PreserveFormatting = True

        .RefreshOnFileOpen = False

        .RefreshStyle = xlInsertDeleteCells

        .SavePassword = False

        .SaveData = True

        .AdjustColumnWidth = False

        .RefreshPeriod = 0

        .TextFilePromptOnRefresh = False

        .TextFilePlatform = 437

        .TextFileStartRow = 1

        .TextFileParseType = xlDelimited

        .TextFileTextQualifier = xlTextQualifierDoubleQuote

        .TextFileConsecutiveDelimiter = False

        .TextFileTabDelimiter = True

        .TextFileSemicolonDelimiter = False

        .TextFileCommaDelimiter = False

        .TextFileSpaceDelimiter = False

        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1)

        '.TextFileFixedColumnWidths = Array(6, 5, 15, 8, 57, 20)

        .TextFileTrailingMinusNumbers = True

        .Refresh BackgroundQuery:=False

    End With

myRow = Cells(Rows.Count, "A").End(xlUp).Row

Range(myDest2 & ":F" & myRow) = myFile

      myFile = Dir

  Loop

  MsgBox "Importazione completata!"

  Application.ScreenUpdating = True

  Application.EnableEvents = True

  Application.Calculation = xlCalculationAutomatic

End Sub

Potreste aiutarmi

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

4 risposte

Ordina per: Più utili
  1. Anonimo
    2017-02-02T08:36:36+00:00

    Vorrei chiederti gentilmente di chiarire i seguenti punti:

    • Contrariamente alla tua esperienza, a me il codice dispone i dati di ciascun file al di sotto di quelli del file precedente;
    • Il tuo codice non suddivide i dati in colonne separate. Vuoi che i dati siano suddivisi o vuoi mantenere il tutto nella colonna A?
    • Vuoi includere le intestazioni delle colonne ad inizio del file o vuoi che le intestazioni vengano ripetute all'inizio dei dati di ogni successivo file?
    • Gli eventuali doppiini si trovano nei dati di un singolo file di testo oppure solo tra i dati dei file diversi?

    Salve Norman,

    grazie per la risposta.

    Mi sa che ho copiato la macro che importa tutto in una colonna anziché dividere per colonne e shiftare il tutto ad ogni file txt importato (non trovo la macro.. :( )

    Mi piacerebbe che i dati fossero divisi in colonne separate con intestazione univoca ad inizio file.

    In merito ai doppioni ti spiego attraverso il seguente caso:

    Teniamo conto che oggi 02.02.2017 estraggo i miei report, faccio girare la macro, che mi estrae tutti i dati come su descritto.

    Poi il 10.02.2017 estraggo nuovi report, che conterranno le date precedentemente improtate piu' le nuove, a questo punto vorrei che la macro importasse solo le nuove, o ripulisse tutto e sostituisca il tutto con i nuovi report (forse questa e' la soluzione piu' ottimale o veloce, perché se un dato vecchio venisse modificato, per via di una correzione, dovrebbe cercare trans x trans e sostituire quelle esistenti con i dati nuovi...giusto?)

    Le colonne dovranno essere le seguenti:

    Store Number Store Name Date WS Nr Trans Nr Seq Type Type Dex Sku Qty Unit Price Ext Price Discount

    Grazie per l'aiuto e la pazienza.

    Lorenzo

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2017-02-01T14:31:48+00:00

    Ciao LMByloom,

    Il file e' stato caricato al seguente link. (cambiare hxxps con https)

    hxxps://www.dropbox.com/s/4t0f90wh20wb7ms/Example1422.txt?dl=0

    Ho rimosso i dati sensibili (12345 sta per il coedice negozio che e' sempre di 5 cifre)

    Nome negozio sta per il nome del negozio legat oal codice negozio.

    Il codice Negozio e' univoco.

    I doppioni sono individuati per riga dove si puo' usare il codice transazione univoco (esempio sotto 2537-2537-2539-2540) per ogni codice negozio (nel caso sotto 12345), anche la data puo' essere un modo per verificare se il dato e' gia' presente in Excel o meno...

    12345  Nome Store                      25/12/16    1   2537  001   03   SALE STD    803074878         1      1.650,00      1.650,00

    12345  Nome Store                      25/12/16    1   2538  001   03   SALE STD    807512265         1      1.350,00      1.350,00

    12345  Nome Store                      25/12/16    1   2539  001   03   SALE STD    807513828         1      2.400,00      2.400,00

    12345  Nome Store                      25/12/16    1   2540  001   03   SALE STD    807225573         1      1.350,00      1.350,00

    Spero di aver risposto a tutte le sue domande, in alternativa m ifacci sapere se ha bisogno di altre informazioni.

    Ovviamente ogni file txt e' relativo a un paese, ogni paese a N negozi, ma questo codice degli N negozio e' univoco. Tra tutti i paesi non esistono codici negozi ripetuti.

    Vorrei chiederti gentilmente di chiarire i seguenti punti:

    • Contrariamente alla tua esperienza, a me il codice dispone i dati di ciascun file al di sotto di quelli del file precedente;
    • Il tuo codice non suddivide i dati in colonne separate. Vuoi che i dati siano suddivisi o vuoi mantenere il tutto nella colonna A?
    • Vuoi includere le intestazioni delle colonne ad inizio del file o vuoi che le intestazioni vengano ripetute all'inizio dei dati di ogni successivo file?
    • Gli eventuali doppioni si trovano nei dati di un singolo file di testo oppure solo tra i dati dei file diversi?

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2017-02-01T05:47:58+00:00

    Salve Norman,

    perfetto prima di tutto grazie per l'interessamento e la risposta.

    Il file e' stato caricato al seguente link. (cambiare hxxps con https)

    hxxps://www.dropbox.com/s/4t0f90wh20wb7ms/Example1422.txt?dl=0

    Ho rimosso i dati sensibili (12345 sta per il coedice negozio che e' sempre di 5 cifre)

    Nome negozio sta per il nome del negozio legat oal codice negozio.

    Il codice Negozio e' univoco.

    I doppioni sono individuati per riga dove si puo' usare il codice transazione univoco (esempio sotto 2537-2537-2539-2540) per ogni codice negozio (nel caso sotto 12345), anche la data puo' essere un modo per verificare se il dato e' gia' presente in Excel o meno...

    12345  Nome Store                      25/12/16    1   2537  001   03   SALE STD    803074878         1      1.650,00      1.650,00

    12345  Nome Store                      25/12/16    1   2538  001   03   SALE STD    807512265         1      1.350,00      1.350,00

    12345  Nome Store                      25/12/16    1   2539  001   03   SALE STD    807513828         1      2.400,00      2.400,00

    12345  Nome Store                      25/12/16    1   2540  001   03   SALE STD    807225573         1      1.350,00      1.350,00

    Spero di aver risposto a tutte le sue domande, in alternativa m ifacci sapere se ha bisogno di altre informazioni.

    Ovviamente ogni file txt e' relativo a un paese, ogni paese a N negozi, ma questo codice degli N negozio e' univoco. Tra tutti i paesi non esistono codici negozi ripetuti.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2017-01-31T15:12:52+00:00

    Ciao LMByloom,

    ho una serie di file txt in una cartella e avrei bisogn odi una macro che importa tutti questi file all'interno di un unico foglio, uno sotto l'altro sovrascrivendo i dati doppioni.

    Ho una macro, ma il problema che importa i dati ma poi ad ogni foglio importato shifta i dati a destra, occupando cosi il foglio in larghetta anziché in verticale...e non sovrascrive i doppioni...

    [cut]

    Come vengono individuati i doppioni ? Si tratta di ripetizioni in una data colonna o, in alternativa, della duplicazione di un'intera riga ?

    Inoltre, ti chiederei gentilmente di caricare un esempio di un file txt, dopo averlo depurato dei dati sensibili, su un servizio di condivisione di file, per esempio Microsoft OneDrive o DropBox, e di postare un link al file in una risposta qui.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento