Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1500to1504
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Txt-File importieren

Txt-File importieren
29.06.2016 16:40:52
Sven
Hallo Zusammen,
ich würde gerne eine Text-Datei über VBA Makro importieren. Ziel ist die Daten in [] jeweils in eine eigene Zelle zu bekommen. Die Datei per Explorer-menue vorher Auswählbar. Die Daten sehen folgend aus:
Punkt: Messpunkt-P1[1,134][12,133](ID:29, aus 0 P.)
Koord. X = -237.651
Koord. Y = 239.620
Koord. Z = 0.000
Punkt: Messpunkt-P2[31,14][14,15](ID:38, aus 0 P.)
Koord. X = -241.744
Koord. Y = 231.289
Koord. Z = 0.000
Punkt: Messpunkt-P3[51,14][12,13](ID:47, aus 0 P.)
Koord. X = -237.184
Koord. Y = 239.144
Koord. Z = 0.000

Folgenden Code habe ich gefunden um ein Explorermenue zu öffnen und zu importieren, leider ohne die Trennung mit den ganzen Zeichen:
  • Sub importdata()
    Dim i As Integer
    Dim SelItem
    With Application.FileDialog(msoFileDialogFilePicker)
    .Filters.Clear
    .Filters.Add "Text Dateien", "*.csv; *.txt", 1
    .AllowMultiSelect = True
    If .Show  -1 Then Exit Sub
    'Dateiname = Application.FileDialog(msoFileDialogFilePicker).SelectedItems
    For Each SelItem In .SelectedItems
    Workbooks.OpenText Filename:=SelItem, Local:=True
    Dateiname = SelItem
    ActiveSheet.UsedRange.Copy ThisWorkbook.Sheets("Data").Cells(Rows.Count, 1).End(xlUp). _
    Offset(1, 0)
    ActiveWorkbook.Close Tru
    Next SelItem
    End With
    End Sub
    

  • Jedoch sollte die Zellentrennung mit mehreren Faktoren funktionieren, Dh. mit "," "Tab" und "Leerzeichen", sowie Sonderzeichen "[" und "]"
    Eine Makroaufzeichung schafft das alles aber nicht mit Explorermenu und nur einem Sonderzeichen:
  • Sub insert()
    With ActiveSheet.QueryTables.Add(Connection:= _
    "TEXT;\\Sample4_250616.txt" _
    , Destination:=Range("$A$1"))
    .Name = "Sample4_250616"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .TextFilePromptOnRefresh = False
    .TextFilePlatform = 850
    .TextFileStartRow = 1
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    .TextFileConsecutiveDelimiter = True
    .TextFileTabDelimiter = True
    .TextFileSemicolonDelimiter = True
    .TextFileCommaDelimiter = True
    .TextFileSpaceDelimiter = True
    .TextFileOtherDelimiter = "]"
    .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
    .TextFileTrailingMinusNumbers = True
    .Refresh BackgroundQuery:=False
    End With
    End Sub
    


  • Habt ihr eine Möglichkeit parat dies umzusetzen? oder wäre es geschickter die Daten normal zu Laden und dann im Nachhinein zu trennen? Falls ja habt ihr da einen Tipp für mich.
    VG
    Sven

    10
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Txt-File importieren
    29.06.2016 19:11:18
    Bastian
    Hey Sven Kannst du das nicht einfacher machen ? mit FormulaLocal dann brauch man nicht so viele filtern ?

    Zu verwirrend
    29.06.2016 19:19:10
    Zwenn
    Hallo Namensvetter,
    ich verstehe ehrlich gesagt nur ungefähr, was Du möchtest. Wozu werden unterschiedliche Trennzeichen benötigt? Die unter anderem mit der Beschreibung "Sonderzeichen" nicht grade einleuchtend sind.
    Es wäre extrem hilfreich, wenn Du eine Beispiel Text-Datei hochlädst, die alle Eventualitäten enthält und zusätzlich noch eine Excel-Datei, in der Du uns zeigst, welches Ergebnis Du für die ersten paar Datensätte erwartest.
    Viele Grüße,
    Zwenn

    Anzeige
    AW: Txt-File importieren
    30.06.2016 08:22:54
    Sven
    Hallo,
    danke schon mal. Mit "Teil finden" is schon mal gut doch nur die Halbe Miete. Es soll folgende Datei:
    https://www.herber.de/bbs/user/106632.txt
    am besten so aufgedröselt werden:
    https://www.herber.de/bbs/user/106633.xlsx
    Die Werte die nach "Messpunkt" erfolgen jeweils in eine eigene Zelle. Später soll nach diesen Werten mal eine Sortierung erfolgen.
    vg
    Sven

    Anzeige
    AW: Txt-File importieren
    30.06.2016 08:28:30
    Sven
    Hallo,
    danke schon mal. Mit "Teil finden" is schon mal gut doch nur die Halbe Miete. Es soll folgende Datei:
    https://www.herber.de/bbs/user/106632.txt
    am besten so aufgedröselt werden:
    https://www.herber.de/bbs/user/106633.xlsx
    Die Werte die nach "Messpunkt" erfolgen jeweils in eine eigene Zelle. Später soll nach diesen Werten mal eine Sortierung erfolgen.
    vg
    Sven

    AW: Txt-File importieren
    30.06.2016 08:51:23
    baschti007
    Ja ich würde dir für die Zukunft vorschlagen gleich Bsp. Dateien hoch zuladen und genau beschreiben was du wo haben willst weil sonst macht man es doppelt ;)
    Das ist zwar nicht so wie du es wolltest aber mit den Basis Wissen von VBA und Excel solltest du es mit diesem Beispiel so umbauen können wie du es brauchst. Weil mehr als Basis Wissen haben ich auch nicht;)
    Gruß Basti
    
    Sub importdata()
    Application.ScreenUpdating = False
    Dim i As Integer
    Dim SelItem
    With Application.FileDialog(msoFileDialogFilePicker)
    .Filters.Clear
    .Filters.Add "Text Dateien", "*.csv; *.txt", 1
    .AllowMultiSelect = True
    If .Show  -1 Then Exit Sub
    ThisWorkbook.Sheets(1).Cells.Clear
    'Dateiname = Application.FileDialog(msoFileDialogFilePicker).SelectedItems
    For Each SelItem In .SelectedItems
    Workbooks.OpenText Filename:=SelItem, Local:=True
    Dateiname = SelItem
    ActiveSheet.UsedRange.Copy ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset( _
    1, 0)
    ActiveWorkbook.Close True
    Next SelItem
    End With
    Range("A2").Clear
    Columns("B:E").Clear
    Call Formeln
    Application.ScreenUpdating = True
    End Sub
    Sub Formeln()
    With Sheets(1)
    StartZeile = 5
    letztezeile = .Cells(1048576, 1).End(xlUp).Row
    Anzahl_messungen = (letztezeile + 2 - StartZeile) / 5
    For i = 1 To Anzahl_messungen
    .Cells(StartZeile + x, 3).FormulaLocal = "=TEIL(A" & StartZeile + x & ";(FINDEN(""["";A" &  _
    StartZeile + x & ";1)+1);((FINDEN(""]"";A" & StartZeile + x & ";1))-(FINDEN(""["";A" & StartZeile + x & ";1)+1)))"
    .Cells(StartZeile + x, 4).FormulaLocal = "=RECHTS(LINKS(A" & StartZeile + x & ";FINDEN(""(""; _
    A" & StartZeile + x & ")-2);LÄNGE(LINKS(A" & StartZeile + x & ";FINDEN(""("";A" & StartZeile + x & ")-2))-FINDEN(""]"";LINKS(A" & StartZeile + x & ";FINDEN(""("";A" & StartZeile + x & ")-2))-1)"
    x = StartZeile + x + 5
    StartZeile = 0
    Next
    End With
    End Sub
    

    Anzeige
    AW: Txt-File importieren
    30.06.2016 12:54:47
    Sven
    Danke Basti,
    damit komm ich sicher zum Ziel.
    vg

    AW: Txt-File importieren
    30.06.2016 12:57:50
    Sven
    Eine Sache noch. Wie kann ich mir den Wert in die Zelle schreiben lassen ohne die Formeln anzugeben?

    AW: Txt-File importieren
    30.06.2016 13:06:50
    baschti007
    Vielleicht So ?
    Einfach Spalten kopieren und einfügen als nur Zahlen
    Sub Makro1()
    Columns("C:D").Copy
    Range("C1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Application.CutCopyMode = False
    End Sub
    

    AW: Txt-File importieren
    30.06.2016 15:10:34
    Sven
    Ok danke probier ich mal

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige