Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Excel in txt umwandeln





Frage

Hallo, ich möchte eine Excel-Datei in eine Textdatei speichern. Wie kann ich vermeiden dass in der Textdatei jedesmal ein Tab-Stopp oder 5-10 Leerzeichen nach jeder Spalte entstehen. Ich brauche in der Textdatei eine zusammenhängende Zeile mit max. 1 Leerzeichen zwischen den Spalten in Excel. Danke

Antwort 1 von Nicolas

sollte das beim csv export nicht so sein? sind dann aber Trennzeichen zwischen den Spalten

Antwort 2 von Abrangl

danke, aber es dürfen auch sonst keine Trennzeichen dazwischen sein, weil die Zeile später als Programmzeile eingelesen werden soll.

Antwort 3 von Primut

Hi Abrangel,

ich habs eben mal probiert als formatierten Text abzuspeichern .prn, dabei werden Leerzeichen als Spaltentrennung mitgespreichert. Diese Leerzeichen dann ganz einfach im Texteditor löschen, d.h. durch nichts ersetzten und Datei in .txt umnennen, funzt bei mir .


Gruß Primut

Antwort 4 von piano

Hallo
Ich schlage vor, den Text bereits in Excel aufzubereiten.
Im Beispiel Annahme, dass 5 Spalten ab Spalte "A" verwendet werden.
Sub Aufbereiten_Text()

    Columns("A:A").Select
    Selection.Insert Shift:=xlToRight
    Range("A1").Select
    ActiveCell.FormulaR1C1 = _
        "=RC[1] & "" "" & RC[2] & "" "" & RC[3] & "" "" & RC[4] & "" "" & RC[5]"
    Range("A1").Select
    Selection.AutoFill Destination:=Range("A1:A3"), Type:=xlFillDefault
    Range("A1:A3").Select
    Columns("A:A").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A5").Select
    Columns("B:G").Select
    Selection.ClearContents
    x = Ersetzen() 
End Sub

Function Ersetzen()
Dim i As Long, z As Long

Range("A65536").End(xlUp).Offset(1, 0).Select
z = ActiveCell.Row - 1
For i = 1 To z
    Cells(i, 1).Value = Trim(Cells(i, 1).Value)
Next i
Columns("A:A").Select
Selection.Replace What:="  ", Replacement:=" ", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
End Function
 

Hier wird vorne eine Spalte eingefügt, alle Felder hier mit Leerzeichen als Trennung zusammengeführt und die Originalfelder gelöscht.
Die Funktion Ersetzen() entfernt überflüssige Leerzeichen.

Gruß piano

Es wäre nett, wenn Du ein Feedback abgeben könntest,
ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 5 von Abrangl

Hallo piano,

das ist wirklich sehr lieb von dir, aber so gut bin ich nun auch wieder nicht. Mit Makros kenne ich mich gar nicht aus.

Kannst du mir vielleicht auch noch schreiben, wo ich das ganze eingeben soll?

Danke im voraus

Antwort 6 von piano

Hallo
Mit Alt/F11 in die VBA -Umgebung, im Projektfenster " Diese Arbeitsmappe" anklicken, Einfügen / Modul.
In das leere Fenster den Code kopieren.
Der Aufruf erfolgt über Extras /Makro / Makros - Makro anklicken - und Ausführen. Man kann natürlich auch einen Button erzeugen, mit dem der Makro aufgerufen wird. Es gibt dazu sicher Beiträge im Forum bzw. in der Office-Hilfe.
Gruss piano

Antwort 7 von Abrangl

Hallo piano,

habe das jetzt gemacht aber es kommt "Fehler beim komplieren, außerhalb einer Prozedur ungültig" markiert wird dabei das "A:A" in der ersten Zeile.

Was mache ich falsch?

Antwort 8 von piano

Hallo
Fehlt Dir vielleicht die 1.Zeile
Zitat:
Sub Aufbereiten_Text()
?

Antwort 9 von Abrangl

Hallo piano,

hast recht habe ich übersehen. Schussel

vielen dank hast mir sehr geholfen.

Antwort 10 von Abrangl

Hallo piano,

kannst du mir bitte nochmal helfen?

wenn ich das Makro ausführe kommt Laufzeitfehler 1004
und dann Anwendungs- oder Objektdefinierter Fehler

Beim Debuggen wird folgendes markiert:

Selection.Replace What:=" ", Replacement:=" ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

Kannst du dich nochmal erbarmen?

Gruß