Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1464to1468
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

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

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

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

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige