Macro Importare txt



  • Macro Importare .txt
    di Jessa (utente non iscritto) data: 19/12/2016 14:58:53

    Buongiorno a tutti,

    premetto che le mie conoscenze sono basiche, quindi spiegazioni pignole sono ben accette.

    Al momento sto creando un tool in excel che possa elaborare i valori di consumi elettrici orari di una giornata per dimensionare impianti.

    Ora i valori di input sono appunto i consumi orari di una giornata, nel mio tool sono presenti valori di default, ma vorrei inserire un pulsante che renda possibile la selezione di un file txt dal quale importare i valori di consumi orari.

    Ciò che fino ad ora ho fatto è stato registrare una macro nella quale caricavo un generico file "Load Profile" .txt. Ovviamente il pulsante che avvia la macro ripete esattamente quell'operazione, MA , io vorrei che schiacciato il pulsante venisse richiesto all'utente quale file caricare dando la possibilità di selezionare il file.

    Guardando discussioni simili sul forum ho notato come sia necessaria la application.GeOpenFilename ma i codice scritto non da i risultati sperati.

     
    Sub LoadUpLoad()
    '
    ' LoadUpLoad Macro
    ' Carica da txt Load giornaliero
    '
    FullNome = Application.GetOpenFilename("Text Files (*.txt),*.text", Title:="Select file")
    
        With ActiveSheet.QueryTables.Add(Connection:=FullNome, Destination:=Range("$U$5:$U$28"))
            .Name = "FullNome"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlOverwriteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = False
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 850
            .TextFileStartRow = 1
            .TextFileParseType = xlFixedWidth
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = True
            .TextFileSemicolonDelimiter = False
            .TextFileCommaDelimiter = False
            .TextFileSpaceDelimiter = False
            .TextFileColumnDataTypes = Array(1)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With
    End Sub
    



  • di patel data: 19/12/2016 15:41:56

    allega un file di esempio da importare





  • di Jessa data: 19/12/2016 15:50:58

    File allegato.



  • di Luca73 data: 19/12/2016 17:28:05

    Prova modificando la riga come sotto:
    Ciao
    Luca
     
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & FullNome, estination:=Range("$U$5:$U$28"))






  • di patel data: 19/12/2016 17:33:49

    prova questa
     
    Sub OpenText_dialog()
    Dim strFile As String, strPath As String
    cartellainiziale = "C:Documenti" ' <<<<<<<<< da cambiare
        With Application.FileDialog(msoFileDialogOpen)
            .InitialFileName = cartellainiziale
            .Title = "Seleziona cartella e File"
            .AllowMultiSelect = False
            .Show
            If .SelectedItems.Count = 0 Then Exit Sub
            sFile = .SelectedItems(1)
        End With
        Workbooks.OpenText sFile, Local:=True
    End Sub






  • di Jessa data: 19/12/2016 19:57:41

    Grazie mille ad entrambi.
    Ho provato entrambe e soluzioni e funzionano tutte e due.
    La seconda vedo che crea proprio un nuovo file excel , nominandolo come il foglio txt, importando i valori in esso contenuto.
    La prima forse più si adatta alle mie necessità, ma con la seconda ho imparato una nuova funzionalità.

    Vorrei solo capire a cosa si riferisce quel: Connection:="TEXT;" giusto per comprendere la logica e non dover incorrere in futuro nello stesso problema.

    Grazie ancora
     
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & FullNome, estination:=Range("$U$5:$U$28"))



  • di patel data: 19/12/2016 20:08:39

    la seconda non crea un nuovo file, apre direttamente il file txt, volendo ne puoi copiare il contenuto nel tuo foglio e chiudere il file.
    Ha il vantaggio di non aggiungere connessioni

     
    Dim strFile As String, strPath As String
    Set sh = ActiveSheet
    cartellainiziale = "F:Download" ' <<<<<<<<< da cambiare
        With Application.FileDialog(msoFileDialogOpen)
            .InitialFileName = cartellainiziale
            .Title = "Seleziona cartella e File"
            .AllowMultiSelect = False
            .Show
            If .SelectedItems.Count = 0 Then Exit Sub
            sFile = .SelectedItems(1)
        End With
        Workbooks.OpenText sFile, Local:=True
        ActiveSheet.UsedRange.Copy sh.Range("A1")
        ActiveWorkbook.Close False
    End Sub






  • di Jessa data: 20/12/2016 09:55:34

    Ho provato ora. Perfette entrambe le soluzioni!

    grazie ad entrambi dell'aiuto e della tempestività!