Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1960to1964
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 in TAB schreiben Fehler beim Array

.txt in TAB schreiben Fehler beim Array
24.01.2024 12:34:33
Mike
Hallo zusammen,

ich versuche den Inhalt einer Textdatei (test.txt) in einen TAB zu schreiben. Da ich mich mit Arrays nicht wirklich gut auskenne habe ich ein wenig die Hilfe von ChatGPT genutzt aber das Ergebnis passt leider nicht wirklich. Der Inhalt wird zwar in den TAB geschrieben aber nicht so wie er soll. Ich vermute, dass es mit dem separieren bzw. dem dimensionieren der Daten zusammenhängt.
Vielleicht kann mir hier jemand helfen und den nachfolgenden Code so ändern das es passt. Eine Beispieldatei habe ich mit hochgeladen damit die Quelldaten ersichtlich sind. Die Beispieldatei ist natürlich nur ein kleiner Ausschnitt der Originalen Datei. In der eigentlichen Datei sind mehrere tausend Einträge. Der Aufbau ist aber bei allen Einträgen identisch

https://www.herber.de/bbs/user/166312.txt




Public Sub txtImport()


Dim AliasPfad As String
Dim wsAlias As Worksheet
Dim fileContent As String
Dim dataArray() As String
Dim rowCounter As Long

Set wsAlias = ActiveWorkbook.Sheets.Add
wsAlias.Name = "Alias"

AliasPfad = "\test.txt"

If Dir(AliasPfad) > "" Then
Open AliasPfad For Input As #1
fileContent = Input$(LOF(1), 1)
Close #1

dataArray = Split(fileContent, " ")

rowCounter = wsAlias.Cells(wsAlias.Rows.Count, 1).End(xlUp).Row + 1

wsAlias.Cells(rowCounter, 1).Resize(UBound(dataArray) + 1).Value = Application.Transpose(dataArray)

End If

End Sub


MfG
Mike

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: .txt in TAB schreiben Fehler beim Array
24.01.2024 12:51:43
daniel
Hi
warum so umständlich?
öffne entweder die Datei mit Workbooks.OpenText https://learn.microsoft.com/de-de/office/vba/api/excel.workbooks.opentext
und kopiere dir dann die Daten dorthin, wo du sie haben möchtest.
Das Workbook.OpenText ist ein Dateiöffnen für Textdateien mit integriertem TextInSpalten (was du ausführen und aufzeichnen solltest, wenn du Recorderunterstütztung benötigt.

alternativ gäbe es den klassischen Datenimport, um die Daten in einen bestimmten Tabellenbereich einzulesen.
hierzu musst du zuerst in "Datei - Optionen - Daten" das "Legacy - Datenimport Assistenten anzeigen: Aus Text" aktiveren
dann hast du für das Einlesen einer Textdatei die Menüfunktion: Daten - Datenabrufen - und transformieren - Aus Text/CSV.
Wenn so ein Import mal eingerichtet ist, dann speichert sich Excel den, so dass man ihn nur aktualisieren muss, um neue Daten einzulesen. Dann musst du dafür noch nicht mal was programmieren (ausser vielleicht dem aktualiseren)

Gruß Daniel
Anzeige
AW: .txt in TAB schreiben Fehler beim Array
24.01.2024 15:58:41
daniel
"Der Inhalt wird zwar in den TAB geschrieben aber nicht so wie er soll. "

da wäre es nicht schlecht, wenn du uns beschreiben würdest, wie der Text in den Tab geschrieben wird und wie er deiner Meinung nach geschrieben werden sollte.
das würde die Fehlersuche erheblich vereinfachen.

wenn der Text gar nicht getrennt wird und alles in einer Spalte steht, ist dein Trennzeichen " " falsch.
dann könnte es alternativ auch der Tabulator sein, das Zeichen mit dem ASCII-Code 9 (im Code Chr(9), oder vbTab)
 dataArray = Split(fileContent, vbTab)

wird der Text zu weit verteilt und du hast viele Leerspalten, dann liegt das an den vielen Leerzeichen zwischen den einzelnen Teilen. diese könnte man mit GLÄTTEN auf ein Leerzeichen reduzieren, so dass keine zwischenspalten entstehen:
 dataArray = Split(Worksheetfunction.Trim(fileContent), " ")


ich vermute auch, dass es von dir nicht gewünscht ist, dass die Werte der ersten Spalte in Zahlen gewandelt werden und damit ihre führende 0 verlieren oder die Trennpunkte nicht mehr an der richtigen Stelle erscheinen.
damit die Werte Text bleiben, musst du ein Hochkomma voranstellen:

dataArray = Split(...)

dataArray(0) = "'" & dataArray(0)


Gruß Daniel


Anzeige
AW: .txt in TAB schreiben Fehler beim Array
24.01.2024 18:17:22
Zwenn
Hallo Mike,

Du kannst die Werte aus der Textdatei mit dem Makro unten in Deine Tabelle schreiben. Da es keine richtige CSV Datei ist, muss man manuell die mehrfachen Leerzeichen entfernen, um die Werte richtig trennen zu können. Den Text selbst liest das Makro mit einem ADOStream ein. Bei dem kann direkt angegeben werden, dass es sich bei der Zeichenkodierung um UTF8 handelt. Der Rest sind nur ein paar Schleifen, split() und etwas Formatierung für die richtige Ausgabe.



Option Explicit

Sub ImportText()

Dim text() As String
Dim textRow() As String
Dim arrRow As Long
Dim arrCol As Long
Dim currCol As Long
Dim currRow As Long

'Text mit ADOStream aus der Datei lesen
With CreateObject("ADODB.stream")
.charset = "UTF-8"
.Open
.LoadFromFile ThisWorkbook.path & "\166312.txt"
text = Split(.ReadText, vbCrLf)
.Close
End With

'Doppelte Leerzeichen entfernen
For arrRow = 0 To UBound(text)
While InStr(1, text(arrRow), " ") > 0
text(arrRow) = Replace(text(arrRow), " ", " ")
Wend
Next arrRow

'Die ersten beiden Spalten im Bereich der Ausgabe
'als Text formatieren, sonst interpretiert Excel
'manche Werte als Zahlen und entfernt ggf. auch
'führende Nullen
ActiveSheet.Range("A1:B" & UBound(text)).NumberFormat = "@"

'Zeilen splitten und in Tabelle ausgeben
For arrRow = 0 To UBound(text)
currRow = currRow + 1
textRow = Split(text(arrRow))

For arrCol = 0 To UBound(textRow)
currCol = currCol + 1
ActiveSheet.Cells(currRow, currCol) = textRow(arrCol)
Next arrCol

currCol = 0
Next arrRow
End Sub


Viele Grüße,

Zwenn
Anzeige
AW: .txt in TAB schreiben Fehler beim Array
24.01.2024 19:14:49
Mike
Hallo Zwenn, Hallo Daniel,

die Sache mit den vielen Leerzeichen hatte ich auch bereits vermutet. Ich denke, so hat es Daniel ja letztlich auch geschrieben, wenn ich die diese entferne, komme ich auch ans Ziel. Ich war mir nur nicht sicher wie ich das umsetze und wollte mich nicht noch weiter verrennen.

Ich werde mir dein Codebeispiel morgen in Ruhe anschauen.

Danke euch beiden für eure Zeit und Hilfe.

MfG
Mike
AW: .txt in TAB schreiben Fehler beim Array
24.01.2024 15:29:30
Mike
Hallo Daniel,

Danke für deine Antwort.

Workbooks.OpenText war mir nicht bekannt. Davon abgesehen hab ich halt gedacht ich probier es einfach mal mit nem Array.
Man kann sich ja auch mal an neues wagen. Vielleicht kann ja dennoch jemand bei dem Problem helfen damit ich den Fehler verstehe.

Die zweite von dir vorgeschlagene Möglichkeit ist in meinem Fall nicht praktikabel. Das Makro wird von vielen unterschiedlichen Kollegen über AddIn bei Bedarf ausgeführt.
Daher würde ich schon gerne eine Lösung haben bei der alles über das Makro läuft.


Vielleicht findet sich noch jemand der mir die Sache mit dem Array näher bringen möchte ansonsten mache ich es tatsächlich über die Open Variante.

Gruß
Mike
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige