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