Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Code Zeilenumbruch entfernen

Forumthread: VBA Code Zeilenumbruch entfernen

VBA Code Zeilenumbruch entfernen
23.12.2015 09:19:23
Paul85
Hallo,
ich habe ein Problem bei der Ausgabe der TXT Datei. Nach dem letzten Zeichen in der letzten Zelle folgt immer ein Zeilenumbruch - dieser führt dazu das man die txt Datei nicht ohne Bearbeitung uploaden kann.
Wie bekomme ich aus folgendem VBA Code diesen Absatz raus?
------------------------------------

Sub TextSchreibenOpti1()
Dim Datei As Integer
Dim zeile As Long, von As Long, bis As Long
Dim Pfad As String, ausgabe As String
Dim a As Variant
von = 1
bis = Range("a" & Rows.Count).End(xlUp).Row - 1
a = Range("a" & von & ":i" & bis)
Pfad = ThisWorkbook.Path & "\TextSchreiben.txt"
Datei = FreeFile
Open Pfad For Output As #Datei
For zeile = von To bis
ausgabe = a(zeile, 1) & "" & a(zeile, 2) & "" & a(zeile, 3) & "" & a(zeile, 4) & "" & a( _
zeile, 5) & "" & a(zeile, 6) & "" & a(zeile, 7) & "" & a(zeile, 8) & "" & a(zeile, 9)
Print #Datei, ausgabe
Next zeile
ausgabe = a(bis + 1, 1) & "" & a(bis + 1, 2) & "" & a(bis + 1, 3) & "" & a(bis + 1, 4) & "" _
_
& a(bis + 1, 5) & "" & a(bis + 1, 6) & "" & a(bis + 1, 7) & "" & a(bis + 1, 8) & "" & a(bis +  _
1, 9)
Close #Datei
End Sub

----------------------------------
Vielen Dank
Paul

Anzeige

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

Betreff
Datum
Anwender
Anzeige
Welcher Text?
23.12.2015 09:26:37
lupo1
Geht es um einen beliebigen Text oder um den o.g. Code?
Vermutung: Zeilenvorschubzeichen zu großzügig (viele nehmen nur so etwa 60 Zeichen für Codezeilen) oder gar nicht gesetzt.

AW: Welcher Text?
23.12.2015 10:25:48
Paul85
Hi Lupo,
es geht um einen Text der sich über 5 Zellen (manchmal mehr/manchmal weniger) erstreckt - der text sprengt 100000 Zeichen. Der Übergang zwischen den Zellen erfolgt ohne Zeilenumbruch - leider immer nur am Ende des Textes/am Ende der eltzen Zelle erfolgt einer. Ich denke es liegt am oben gennanten Code....
Habt Ihr eine Idee? Ich muss nur den Zeilenumbruch in der eltzten Zeile wegbekommen.
Best
Paul

Anzeige
AW: Welcher Text?
23.12.2015 12:41:58
Daniel
Hi
Deine Schleife läuft von der ersten bis zur letzten Zeile.
Nach der Schleife führst du aber noch einmal das Print aus mit der ersten Leerzeile (bis + 1).
Lass das weg.
Das &""& als Zwischentext ist überflüssig.
Einfacher ginge das Speichern als Text wahrscheinlich so:
1. In einer Hifsspalte die Teiltexte perFormel zusammenfassen.
2. Neue leere Mappe erstellen
3. Die Hilfsspalte kopieren und als Wert in die neue Datei einfügen.
4. Die neue Datei als Textdatei speichern.
Frohe Weihnachten, Daniel

Anzeige
AW: Welcher Text?
23.12.2015 13:15:58
Paul85
Hi Daniel, hab die bis +1 Zeile jett rausgenommen, der gleich Effekt - also immer noch ein zeilenumbruch am Ende mit drin......

Sub TextSchreibenOpti1()
Dim Datei As Integer
Dim zeile As Long, von As Long, bis As Long
Dim Pfad As String, ausgabe As String
Dim a As Variant
von = 1
bis = Range("a" & Rows.Count).End(xlUp).Row - 1
a = Range("a" & von & ":i" & bis)
Pfad = ThisWorkbook.Path & "\TextSchreiben.txt"
Datei = FreeFile
Open Pfad For Output As #Datei
For zeile = von To bis
ausgabe = a(zeile, 1) & "" & a(zeile, 2) & "" & a(zeile, 3) & "" & a(zeile, 4) & "" & a(  _
_
zeile, 5) & "" & a(zeile, 6) & "" & a(zeile, 7) & "" & a(zeile, 8) & "" & a(zeile, 9)
Print #Datei, ausgabe
Next zeile
Close #Datei
End Sub

Anzeige
Liegt am Print
26.12.2015 17:30:45
Michael
Hi zusammen,
ist es nicht so, daß der Print-Befehl automatisch einen Zeilenumbruch (CR+LF) anfügt?
Dazu fällt mir eigentlich nur ein, ein Byte-Array zu schreiben, also richtig schönes "Bitgepfriemel".
Naja, so schlimm ist es nicht: man muß nur Strings in Arrays verwandeln, und die Feinheiten kann man in der Hilfe von StrConv nachlesen:
Option Explicit
Sub TextSchreibenOptiPut()
Dim Datei As Integer
Dim zeile As Long, von As Long, bis As Long
Dim Pfad As String, ausgabe As String
Dim a As Variant, za() As Byte
von = 1
bis = Range("a" & Rows.Count).End(xlUp).Row
a = Range("a" & von & ":i" & bis)
Pfad = ThisWorkbook.Path & "\TextSchreiben20151226.txt"
Datei = FreeFile
Open Pfad For Binary Access Write As #Datei
For zeile = von To bis - 1
ausgabe = a(zeile, 1) & "" & a(zeile, 2) & "" & a(zeile, 3) & "" & a(zeile, 4) _
& "" & a(zeile, 5) & "" & a(zeile, 6) & "" & a(zeile, 7) & "" & a(zeile, 8) _
& "" & a(zeile, 9) & vbCrLf
za = StrConv(ausgabe, vbFromUnicode)
'   MsgBox Len(ausgabe) & " " & UBound(za)
Put #Datei, , za
Next zeile
ausgabe = a(zeile, 1) & "" & a(zeile, 2) & "" & a(zeile, 3) & "" & a(zeile, 4) _
& "" & a(zeile, 5) & "" & a(zeile, 6) & "" & a(zeile, 7) & "" & a(zeile, 8) _
& "" & a(zeile, 9)
za = StrConv(ausgabe, vbFromUnicode)
Put #Datei, , za
Close #Datei
End Sub
Die For-Schleife läuft bis "bis-1", aber wegen der VBA-Eigenart, daß die Zählvariable nach Beenden der Schleife den höheren Wert +1 beinhaltet, ist zeile=bis, und damit hast Du die unterste Zeile, bei der denn *kein* Zeilenvorschub angehängt wird.
Schöne Grüße,
Michael
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

VBA Code: Zeilenumbruch Entfernen


Schritt-für-Schritt-Anleitung

Um den Zeilenumbruch am Ende einer TXT-Datei zu entfernen, kannst du den folgenden VBA-Code verwenden. Dieser Code optimiert die Speicherung, indem er den überflüssigen Zeilenumbruch vermeidet:

Sub TextSchreibenOptimiert()
    Dim Datei As Integer
    Dim zeile As Long, von As Long, bis As Long
    Dim Pfad As String, ausgabe As String
    Dim a As Variant
    von = 1
    bis = Range("A" & Rows.Count).End(xlUp).Row
    a = Range("A" & von & ":I" & bis)
    Pfad = ThisWorkbook.Path & "\TextSchreiben.txt"
    Datei = FreeFile
    Open Pfad For Output As #Datei
    For zeile = von To bis
        ausgabe = a(zeile, 1) & "" & a(zeile, 2) & "" & a(zeile, 3) & "" & a(zeile, 4) _
                & "" & a(zeile, 5) & "" & a(zeile, 6) & "" & a(zeile, 7) & "" & a(zeile, 8) _
                & "" & a(zeile, 9)
        If zeile < bis Then
            Print #Datei, ausgabe
        End If
    Next zeile
    Close #Datei
End Sub

In diesem Code wird der Print-Befehl nur für Zeilen ausgeführt, die nicht die letzte Zeile sind, wodurch der unerwünschte Zeilenumbruch entfernt wird.


Häufige Fehler und Lösungen

  1. Zeilenumbruch bleibt erhalten

    • Lösung: Stelle sicher, dass der Print-Befehl nur für die Zeilen verwendet wird, die tatsächlich Daten enthalten. Überprüfe die Schleife und die Bedingung, die den Print-Befehl steuert.
  2. Leere TXT-Datei

    • Lösung: Achte darauf, dass der Bereich in Range("A" & von & ":I" & bis) korrekt definiert ist und dass auch Daten vorhanden sind.
  3. Fehler bei der Dateispeicherung

    • Lösung: Überprüfe den Pfad, in dem die Datei gespeichert wird, und stelle sicher, dass du die entsprechenden Berechtigungen hast.

Alternative Methoden

Eine einfache Alternative ist das Speichern der Daten als Text über die Excel-Oberfläche:

  1. Kopiere die Daten in eine Hilfsspalte und füge diese als Werte in eine neue Arbeitsmappe ein.
  2. Speichere die neue Datei als TXT-Datei. Dies kann helfen, Formatierungsprobleme zu vermeiden, die durch den VBA-Code entstehen.

Zusätzlich kannst du auch SQL verwenden, um Daten zu exportieren, falls du mit einer Datenbank arbeitest.


Praktische Beispiele

Hier sind einige praktische Szenarien, in denen das Entfernen von Zeilenumbrüchen nützlich sein kann:

  • Export von Daten für externe Anwendungen: Wenn du Daten in ein System importieren musst, das keine Zeilenumbrüche akzeptiert, kann dieser VBA-Code helfen.
  • Vorbereitung von Berichten: Wenn du Berichte in Textformat exportierst, achte darauf, dass am Ende keine zusätzlichen Leerzeilen eingefügt werden.

Tipps für Profis

  • Nutze vbCrLf nur dann, wenn du explizit einen Zeilenumbruch benötigst. Andernfalls kann es zu unerwünschten Ergebnissen kommen.
  • Überlege, ob du anstelle von Print die Methode Put verwenden möchtest, um mehr Kontrolle über das Format zu haben.
  • Verwende StrConv, um sicherzustellen, dass die Daten korrekt in das gewünschte Format umgewandelt werden, insbesondere wenn du mit Unicode arbeitest.

FAQ: Häufige Fragen

1. Wie kann ich den Zeilenumbruch in Excel selbst entfernen?
Du kannst in Excel die Funktion "Suchen und Ersetzen" verwenden, um Zeilenumbrüche zu löschen, indem du Alt + Enter eingibst und durch nichts ersetzt.

2. Gibt es eine Tastenkombination, um Word-Zeilenumbrüche zu entfernen?
Ja, du kannst Strg + H verwenden, um das Ersetzen-Fenster in Word zu öffnen und dort Zeilenumbrüche zu entfernen.

3. Was ist der Unterschied zwischen Print und Put in VBA?
Print fügt automatisch einen Zeilenumbruch hinzu, während Put mehr Kontrolle über die Datenübertragung gibt und keine zusätzlichen Zeilenumbrüche hinzufügt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige