Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1784to1788
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

Viele Texte zeilenweise speichern?

Viele Texte zeilenweise speichern?
12.10.2020 19:04:43
Sergej
Hallo Leute,
wie kann ich viele Texte (ca. 50 Zeilen) per VBA in eine TXT-Datei zeilenweise im UTF-8 Format schreiben?
Die Texte sollen im Code und nicht in einem Arbeitsblatt definiert werden.
Das Makro für zwei Zeilen habe ich zurzeit wie folgt vorbereitet:
Sub T_1()
tmpStr = "qweüöä" & vbCrLf & "ASDLÖÄ"
sFilename = "C:\ADO_Test.txt"
Set fsT = CreateObject("ADODB.Stream")
fsT.Type = 2                'Stream-Typ: Text/String
fsT.Charset = "utf-8"       'Zeichensatz
fsT.Open                    'Stream öffnen
fsT.WriteText tmpStr        'Daten schreiben
fsT.SaveToFile sFilename, 2 'Datei speichern
Set fsT = Nothing
End Sub
Geht es auch ohne & vbCrLf quasi so, dass ich im Code untereinander die Texte schriebe?
Besten Dank im Voraus.
Gruß,
Sergej

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Viele Texte zeilenweise speichern?
12.10.2020 19:51:39
volti
Hallo Sergej,
wenn Du die Texte vorher in einer Variablen sammelst, also so wie Du es schon machst und alles in einem Rutsch wegschreibst, geht es nicht ohne vbCrLf, denn das ist ja der Zeilenvorschub bzw. das Datenzeilenende.
Du könntest natürlich auch zunächst einen beliebigen Platzhalter für den Zeilenumbruch verwenden:
tmpStr = "qweüöä|ASDLÖÄ|weiteres|noch weiteres..."
und den dann ersetzen:
tmpStr = Replace(tmpStr, "|", vbCrLf)
viele Grüße
Karl-Heinz
AW: Viele Texte zeilenweise speichern?
12.10.2020 20:15:14
Sergej
Hallo Karl-Heinz,
vielen Dank für deine Antwort. Meine Zeilen sind etwas lang und beinhalten Zeichen, die wahrscheinlich im Code mit Anführungszeichen maskiert werden müssen, oder? Ein Ausschnitt der Zeilen?
Description="SV_Revisionsöffnung" Module="vent" Datamask="*" Condition="KBZ=RVE"
Value="[WS]W@[TYP]E@[REF]P1@[TOP]-${b}/2-25@[BOTOM]${b}/2+25@[LEFT]-${a}/2-25@[RIGHT]${a}/2+25@[ _
FRONT]0@[END]150.0@[ATTRI]STOER2@[P_K_KBZ]@[P_BEZ]@[P_AKS_00]@"
Description="SV_Vent_1" Module="vent" Datamask="123" Condition="KBZ=SY81"
Value="[WS]W@[TYP]E@[REF]P1@[TOP]-${D}/2-30@[BOTOM]${D}/2+30@[LEFT]-${D}/2-160@[RIGHT]-${D}/2@[ _
FRONT]0@[END]${l}.0@[ATTRI]STOER2@[P_K_KBZ]@[P_BEZ]@[P_AKS_00]@"
Description="SV_Auslass_1" Module="vent" Datamask="20111" Condition="KBZ=OUTLET"
Value="[WS]S@[TYP]R@[REF]P1@[P1.X]!P2.X@[P1.Y]!P2.Y@[P1.Z]!P2.Z@[P2.X]!P2.X+150@[P2.Y]!P2.Y@[P2. _
Z]!P2.Z@[DN]${d1}@[ATTRI]STOER1@[P_K_KBZ]@[P_BEZ]@[P_AKS_00]@"
Description="SV_Auslass_2" Module="vent" Datamask="120" Condition="KBZ=GM"
Value="[WS]S@[TYP]E@[REF]P1@[TOP]-${a}/2@[BOTOM]${a}/2@[LEFT]-${b}/2@[RIGHT]${b}/2@[FRONT]${l}@[END]${l}+150.0@[ATTRI]STOER1@[P_K_KBZ]@[P_BEZ]@[P_AKS_00]@"
Beste Grüße,
Sergej
Anzeige
AW: Viele Texte zeilenweise speichern?
13.10.2020 00:10:33
volti
Hallo Sergej,
wenn Du so lange Texte einschließlich " im Code unterbringen willst, könntest Du sie in einem Array unterbringen. Die " würde ich wieder mit einem Platzhalter vorhalten, z.B. ', was dann später in einer Schleife ersetzt und geschrieben wird.
Hier ein Vorschlag:

Code:
[Cc][+][-]
 
Sub T_1() Dim sArr(2) As String, sFilename As String Dim i As Integer sArr(0) = "Description='SV_Revisionsöffnung' Module='vent' Datamask='*' Condition='KBZ=RVE' " _ & "Value='[WS]W@[TYP]E@[REF]P1@[TOP]-${b}/2-25@[BOTOM]${b}/2+25@[LEFT]-${a}/2-25@[RIGHT]${a}/2+25@[" _ & "FRONT]0@[END]150.0@[ATTRI]STOER2@[P_K_KBZ]@[P_BEZ]@[P_AKS_00]@'" sArr(1) = "Description='SV_Vent_1' Module='vent' Datamask='123' Condition='KBZ=SY81'" _ & "Value='[WS]W@[TYP]E@[REF]P1@[TOP]-${D}/2-30@[BOTOM]${D}/2+30@[LEFT]-${D}/2-160@[RIGHT]-${D}/2@[" _ & "FRONT]0@[END]${l}.0@[ATTRI]STOER2@[P_K_KBZ]@[P_BEZ]@[P_AKS_00]@'" sArr(2) = "Description='SV_Auslass_1' Module='vent' Datamask='20111' Condition='KBZ=OUTLET'" _ & "Value='[WS]S@[TYP]R@[REF]P1@[P1.X]!P2.X@[P1.Y]!P2.Y@[P1.Z]!P2.Z@[P2.X]!P2.X+150@[P2.Y]!P2.Y@[P2." _ & "Z]!P2.Z@[DN]${d1}@[ATTRI]STOER1@[P_K_KBZ]@[P_BEZ]@[P_AKS_00]@'" sFilename = "C:\ADO_Test.txt" With CreateObject("ADODB.Stream") .Type = 2 'Stream-Typ: Text/String .Charset = "utf-8" 'Zeichensatz .Open 'Stream öffnen For i = 0 To UBound(sArr) .WriteText Replace(sArr(i), "'", """") & vbCrLf 'Daten schreiben Next i .SaveToFile sFilename, 2 'Datei speichern .Close 'Stream schließen End With End Sub
 
____________________
viele Grüße aus Freigericht
Karl-Heinz

Anzeige
AW: Viele Texte zeilenweise speichern?
13.10.2020 20:19:24
Sergej
Hallo Karl-Heinz,
vielen herzlichen Dank.
Beste Grüße,
Sergej

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige