Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1312to1316
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

Import .txt Problem

Import .txt Problem
29.05.2013 21:02:24
Frank
Hi,
ich habe das problem, dass eine eigentlich eindeutige .txt datei die ich von .csv zu .txt umbenannt habe um den Import Wizard zu bekommen, nicht korrekt importiert. In einer Spalte wird ein Wort durchtrennt und eine neue Zeile gebildet, statt dass die Zellen richtig befuellt werden. Als ob eine Art Dictionary das prueft und eine Zeilenbildung ausloest.
Habe alles mit screenshots auch hier dokumentiert gehabt, aber noch keine Loesung gefunden: http://www.excelforum.com/excel-programming-vba-macros/926325-excel-csv-import-assigning-to-column-problem.html?p=3257254#post3257254
LG,
Frank

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Import .txt Problem
29.05.2013 23:21:33
michael
Hi Frank,
schade man kann dein Bsp. nicht betrachten wenn man im o.g. Forum nicht registriert ist. Vielleicht schadet es nicht die Bilder hier auch hier einzustellen.
VG
Michael

AW: Import .txt Problem
29.05.2013 23:54:49
Frank
ah ok ..
Excel .csv import assigning to column problem
Hi,
using Excel 2003, when I import this .csv as .txt, so to get the import wizard, one field makes trouble, not accepting the content as coherent content of the cell and creates new rows in the excel sheet where there is a space in that content ... how can I avoid this behavior and receive the content for that column kept together in the wanted target cell ?
At the yellow spots in the examples below i have exchanged such content with an “x” and it works there, at the blue marked spots i left it as it originally is:
.txt:
http://files.2he.com/uploads2/2013_05_27_17_19_29.jpg
Import wizard:
http://files.2he.com/uploads2/2013_05_27_17_20_25.jpg
Excel sheet :
http://files.2he.com/uploads2/2013_05_27_17_15_44.jpg
Here is the original file as i import it: http://files.2he.com/uploads2/b.txt
bekam diesen code im dortigen Forum:
Dim wsDst As Worksheet
Dim rng As Range
Dim strLine As String
Dim arrVals
Dim FF As Long
FF = FreeFile()
Set wsDst = Worksheets.Add
Set rng = wsDst.Range("A1")
' change directory and filename as needed
Open "C:\Test\b.txt" For Input As FF
While Not EOF(FF)
Line Input #FF, strLine
arrVals = Split(Replace(strLine, Chr(34), ""), ";")
rng.Resize(, UBound(arrVals) + 1).Value = arrVals
Set rng = rng.Offset(1)
Wend
Close #FF
With Range("A1", rng).Resize(, UBound(arrVals) + 1)
.WrapText = False
.EntireColumn.AutoFit
End With
ging aber nicht, bekam error:
http://files.2he.com/uploads2/2013_05_29_23_50_29.jpg
its really wired, because the break happens not to the next cell, but to the next line, and also it breaks in the middle of a word "DAUERAUFTRAGMTL ..." is split to "DAUERAUFTRAG" "MTL ..."
http://files.2he.com/uploads2/2013_05_29_23_52_07.jpg
Have no idea what this can be caused by.
Best regards,
Frank

Anzeige
AW: Import .txt Problem
30.05.2013 09:37:20
Luschi
Hallo Frank,
die 'b.txt' enthält im 3. Datensatz zusätzliche 2 Steuerzeichen ASCII-10 zwischen
DAUERAUFTRAG und MTL sowie HONORARVORAUSZAHLUNG und PAS.
Der Windows-Editor zeigt diese beiden Steuerzeichen nicht an und schreibt beide Worter zusammen
(DAUERAUFTRAGMTL bzw. HONORARVORAUSZAHLUNGPAS), das Excel-Import-Modul reagiert aber darauf und behandelt die Steuerzeichen als Zeilenwechselzeichen.
Die Tatsache des Vorhandenseins von ASCII-Zeichen < 32 mitten im Text ist ein untrüglichen Zeichen, daß diese txt-Datei von einem Maschinen-Programm (Datenlogger o.Ä.) erstellt wurde.
Bevor also die txt-Datei in Excel importiert werden kann, muß man per Vba diese zusätzlichen Steuerzeichen entfernen - wenn man das aber tut, kann man auch gleich die gesamte Import-Routine mit Vba erschlagen und muß nicht den Excel-Assi bemühen.
Wenn Du Excel-Vba in der Firma verwenden darfst, schaue ich mal nach einer Lösung.
Leider drängelt mein Chef und ich komme erst nachmittags dazu.
Der Excel-Assi würde noch eine andere Schwierigkeit bereiten, da das letzte Datenfeld keine Überschrift besitzt und nur mit " " gekenntzeichnet ist; Excel würde diese Spalte nicht importieren.
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Import .txt Problem
30.05.2013 11:17:22
Frank
Hi Luschi,
Danke fuer Dein checking into it ! Jetzt wird natuerlich alles klar. Versteckte Steuerzeichen. Ja, VBA kann ich hier machen, kein Problem. Wg. der letzten Spalte, bisher hat der Import Wizard die brav importiert, nur eben ohne Spaltenueberschrift, was ja ok ist. Das Haben / Soll wird allerdings benoetigt um zu bestimmen ob der Betrag positiv oder negativ ist.
LG,
Frank

AW: Import .txt Problem
30.05.2013 10:19:08
michael
Hallo Frank,
mir ist aufgefallen, dass die Zeilenumbrüche schon zwischen txt: http://files.2he.com/uploads2/2013_05_27_17_19_29.jpg und http://files.2he.com/uploads2/b.txt
auftreten.
Ich habe aus deiner txt-Datei eine txt-Datei ohne Zeilenumbrüche erstellt.
https://www.herber.de/bbs/user/85579.txt
Anschließend mit Daten - Externe Daten Abrufen - Aus Text eingefügt (Analog deimen Wizzard) und es steht deim Problembereich in einer Zelle. Ich habe xl 2007 Deutsch, meine Region- und Spacheinstellungen entsprechen den deutschen.
U.U. liegt es an deinem angelsächsischen Excel, oder es gibt ein Konflikt zw. den Einstellugen im xl und den Region- und Spacheinstellungen.
Allerdings - warum wandelst du deine csv in txt um. Bei"aus Text einfügen" erscheint bei mir Textdatei (*.prn, *.txt, *.csv).
Auch dein Bsp. hatte ich von txt in csv umbennant - geht ohne Fehler.
Das war der händische Weg.
Falls du einen VBA-Weg benötigst würde ich (als Laie) dir die Aufzeichnung über Daten - Externe Daten Abrufen - Aus Text eingefügt - Text in Spalten (Wizzard) empfehlen.
Sinngemäß diesem:
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & ThisWorkbook.Path & Pfad, Destination:=Cells(2, j))
.Name = DatName '= "Test"
.FieldNames = True
.RowNumbers = False
.
.
.
.TextFileColumnDataTypes = Array(9, 1, 1, 9, 9, 9, 9)
.
End With
Viele Grüße Michael

Anzeige
AW: Import .txt Problem
02.06.2013 11:19:29
michael
Hallo Frank
ich hatte dir um Platz zusparen nur einen Teil kopiert, da du eh per Recorder deine Prozedur aufzeichenen solltest.
Als Beispiel eine Datei mit 5 Spalten, mit ";" getrennt und alle Spalten werden eingefügt .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1)
Wenn du eine weglassen möchtest dann statt 1 eine 9 setzen - macht aber auch der recorder.
Sub Makro1()
' Makro1 Makro
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\MS\test.csv" _
, Destination:=Range("$A$1"))
.Name = "test"
.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 = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub

VG
michael

Anzeige
AW: Import .txt Problem
02.06.2013 17:52:22
Frank
Hi,
ich habe mit Tools / Import / Data es per Hand versucht, aber da das original .csv Dokument der Bank nur teilweise regelmaessige Spalten und Zeilen hat, der Rest ist einfach reingeschriebenes Zeug ohne Bezug zu den Spalten fuer den Import. Bisher hat leider nichts funktioniert, so dass ich zu mindest den Kontobewegungsteil in sauber geteilten Spalten und Reihen bekomme und mir dann jeweils per Hand rauskopiere.
Die Bank liefert leider nur dieses .csv als einzige export Option. Es ist zum Maeusemelken, ich komme immer noch nicht vorwaerts. Das VBA funktioniert jetzt soweit das es was tut, aber leider noch alles durcheinander. Der Anteil mit den Spalten braucht 10 Spalten u. ich habe die Stelle im VBA so gemacht :
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
das war wohl falsch, weiss aber auch nicht wirklich was es bedeutet. Habe keine andere Stelle gefunden die ansonsten die Spaltenanzahl angeben koennte.
Frage ist ob diese art von .csv layout ueberhaupt richtig gelesen werden kann ?
LG,
Frank

Anzeige
AW: Import .txt Problem
30.05.2013 10:16:43
Christian
Hallo Frank,
eine eigentlich eindeutige .txt datei die ich von .csv zu .txt umbenannt habe
Nein, die txt-Datei ist nicht eindeutig, denn hier sind unterschiedliche Steuerzeichen für Zeilenumbrüche enthalten.
  • CRLF (carriage return line feed) wie es von Dos/Windows verwendet wird
  • LF (line feed) wie man es von Unix kennt

  • Bei Excel csv-Dateien werden aber LF's als Zeilenumbruch innerhalb einer Zelle verwendet.
    Der Textkonvertierungs-Assistent interpretiert aus Kompatibilitätsgründen die LF's als Zeilenumbruch (und auch reine CR's wie sie bei MAC eingesetzt werden). Eine csv-Datei kann direkt in Excel geöffnet werden und da sind die LF's Zeilenumbrüche innerhalb einer Zelle wie gewünscht.
    Stellt sich die Frage, für was du den Text-Assistenten brauchst? Wahrscheinlich kannst du dein Problem auch anders lösen.
    Gruß
    Christian
    PS: Poste doch hier mal den VBA-Code aus dem anderen Forum, dann muss man das Rad nicht neu erfinden.
    PPS: Crossposting - ich empfehle im anderen Forum Bescheid zugeben, dass du das Thema auch hier eingestellt hast.

    Anzeige
    AW: Import .txt Problem
    01.06.2013 22:31:52
    Frank
    Hi, ich habe irgendwie keine Email benachrichtigung mehr bekommen wg. neuen Posts zu dem Thema u. sehe erst jetzt dass neue Posts eingegangen sind. Hm, kann auch nicht rausfinden, trotz andauernd probieren, wo mal der ganze thread so dasteht dass ich direkt drauf replyen kann ... anyways, hoffe dass dieser text bei euch ankommt bzw. ihr den sehen koennt. Den Vorschlag von Michael probiere ich gleich aus, u. das VBA aus von der anderen site ist wie folgt:
    Dim wsDst As Worksheet
    Dim rng As Range
    Dim strLine As String
    Dim arrVals
    Dim FF As Long
    FF = FreeFile()
    Set wsDst = Worksheets.Add
    Set rng = wsDst.Range("A1")
    ' change directory and filename as needed
    Open "C:\Test\b.txt" For Input As FF
    While Not EOF(FF)
    Line Input #FF, strLine
    arrVals = Split(Replace(strLine, Chr(34), ""), ";")
    rng.Resize(, UBound(arrVals) + 1).Value = arrVals
    Set rng = rng.Offset(1)
    Wend
    Close #FF
    With Range("A1", rng).Resize(, UBound(arrVals) + 1)
    .WrapText = False
    .EntireColumn.AutoFit
    End With
    LG,
    Frank

    Anzeige
    AW: Import .txt Problem
    01.06.2013 22:42:45
    Frank
    Hi Christian, Danke fuer Dein Reply. Weiss nicht ob das andere Post das ich gemacht habe bei Dir ankommt, deswegen, jetzt wo ich glaube verstanden zu haben dass man auf jedes Post separat antwortet ? sende ich Dir hier den VBA Code von der anderen Seite nochmal, just in case :
    Dim wsDst As Worksheet
    Dim rng As Range
    Dim strLine As String
    Dim arrVals
    Dim FF As Long
    FF = FreeFile()
    Set wsDst = Worksheets.Add
    Set rng = wsDst.Range("A1")
    ' change directory and filename as needed
    Open "C:\Test\b.txt" For Input As FF
    While Not EOF(FF)
    Line Input #FF, strLine
    arrVals = Split(Replace(strLine, Chr(34), ""), ";")
    rng.Resize(, UBound(arrVals) + 1).Value = arrVals
    Set rng = rng.Offset(1)
    Wend
    Close #FF
    With Range("A1", rng).Resize(, UBound(arrVals) + 1)
    .WrapText = False
    .EntireColumn.AutoFit
    End With
    LG,
    Frank
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige