Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro Zeilen in .txt Datei kopieren -Fehler

Makro Zeilen in .txt Datei kopieren -Fehler
30.08.2018 16:29:57
Andre_D
Hallo zusammen,
per Makro möchte ich, dass aus einem Tabellenblatt Zeilen, in denen die Spalte A einen Wert enthält, in eine Text-Datei geschrieben werden. Die Spalten sollen per Tabstop getrennt werden. Besonderheit: der Export soll bei Zeile 3 beginnen.
Habe einen Code gefunden der auch funzt, allerdins startet die TXT-Datei mit sechs Leerzeichen. Das soll so nicht sein.
Könnte bitte einer meinen Code überprüfen und mir sagen, wo der Fehler liegt?
Sub Exportieren()
Dim intFF As Integer
Dim iZeile As Long, iSpalte As Long
Dim strDatei As String, strTemp As String, strSep As String
strSep = vbTab              'Trennzeichen
Worksheets("Tabelle1").Activate
strDatei = "C:\Users\Vertriebsleitung\Documents\TestKunde.txt"
If Dir(strDatei)  "" Then
'Schreibschutz für erstellte Datei entfernen
VBA.FileSystem.SetAttr (strDatei), 0      '0 = normal ohne ReadOnly
End If
intFF = FreeFile
iZeile = 3                                 ' Variable für Zeilennummer
Open strDatei For Output As #intFF      ' Öffnet oder erstellt Textdatei zum  _
hineinschreiben
For iSpalte = 1 To 4
strTemp = strTemp & strSep & Cells(iZeile, iSpalte).Text
Next
Print #intFF, strTemp                   ' Zwischenspeicher in TXTDatei schreiben
iZeile = iZeile + 1                     ' Zeilenzähler erhöhen
Do Until Cells(iZeile, 3).Value = ""    ' Schleife: Laufe solange, bis Zelle leer ist
strTemp = ""                          ' Zwischenspeicher zurücksetzen
' Zellwerte an Zwischenspeicher übergeben
For iSpalte = 1 To 4
strTemp = strTemp & IIf(strTemp = "", "", strSep)
Select Case iSpalte
Case 1, 2, 3, 4
'Zelleninhalte übernehmen wie angezeigt( Text, PLZ, Telefonnummern, Währungen)
strTemp = strTemp & Cells(iZeile, iSpalte).Text
Case Else 'Zellwert an Zwischenspeicher anfügen
strTemp = strTemp & Cells(iZeile, iSpalte).Value
End Select
Next
Print #intFF, strTemp                   ' Zwischenspeicher in TXTDatei schreiben
iZeile = iZeile + 1                     ' Zeilenzähler erhöhen
Loop                                    ' zurück zum Schleifenbeginn
Close #intFF                            ' schließt die Textdatei
'Schreibschutz für erstellte Datei setzen
VBA.FileSystem.SetAttr (strDatei), 1      '1 = ReadOnly
End Sub
Ideal wäre auch noch, wenn mit jemand eine Codezeile schreibt, aus der sich der Dateiname ergibt. Geht es, dass es eine Kombination aus "XXX_ und Feld A3" ist?
Danke für Eure Hilfe
Andre

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

Betreff
Datum
Anwender
Anzeige
AW: Makro Zeilen in .txt Datei kopieren -Fehler
30.08.2018 19:58:53
Robert
Hallo Andre,
die geänderten Zeilen habe ich rot markiert:
Sub Exportieren()
Dim intFF As Integer
Dim iZeile As Long, iSpalte As Long
Dim strDatei As String, strTemp As String, strSep As String
strSep = vbTab              'Trennzeichen
Worksheets("Tabelle1").Activate
strDatei = "C:\Users\Vertriebsleitung\Documents\XXX_" & Range("A3")  _
& ".txt"
If Dir(strDatei)  "" Then
'Schreibschutz für erstellte Datei entfernen
VBA.FileSystem.SetAttr (strDatei), 0      '0 = normal ohne ReadOnly
End If
intFF = FreeFile
iZeile = 3                                 ' Variable für Zeilennummer
Open strDatei For Output As #intFF      ' Öffnet oder erstellt Textdatei zum  _
hineinschreiben
For iSpalte = 1 To 4
strTemp = strTemp & IIf(strTemp = "", "", strSep) & Cells(iZeile,  _
iSpalte).Text
Next
Debug.Print strTemp
Print #intFF, strTemp                   ' Zwischenspeicher in TXTDatei schreiben
iZeile = iZeile + 1                     ' Zeilenzähler erhöhen
Do Until Cells(iZeile, 3).Value = ""    ' Schleife: Laufe solange, bis Zelle leer ist
strTemp = ""                          ' Zwischenspeicher zurücksetzen
' Zellwerte an Zwischenspeicher übergeben
For iSpalte = 1 To 4
strTemp = strTemp & IIf(strTemp = "", "", strSep)
Select Case iSpalte
Case 1, 2, 3, 4
'Zelleninhalte übernehmen wie angezeigt( Text, PLZ, Telefonnummern, Währungen)
strTemp = strTemp & Cells(iZeile, iSpalte).Text
Case Else 'Zellwert an Zwischenspeicher anfügen
strTemp = strTemp & Cells(iZeile, iSpalte).Value
End Select
Next
Print #intFF, strTemp                   ' Zwischenspeicher in TXTDatei schreiben
iZeile = iZeile + 1                     ' Zeilenzähler erhöhen
Loop                                    ' zurück zum Schleifenbeginn
Close #intFF                            ' schließt die Textdatei
'Schreibschutz für erstellte Datei setzen
VBA.FileSystem.SetAttr (strDatei), 1      '1 = ReadOnly
End Sub
Gruß
Robert
Anzeige
AW: Makro Zeilen in .txt Datei kopieren -Fehler
31.08.2018 08:35:05
Andre_D
Hallo Robert,
funzt! Super und vielen Dank!
Gruß
Andre
Gerne und Danke für die Rückmeldung (owT)
31.08.2018 08:41:56
Robert
AW: Makro Zeilen in .txt Datei kopieren -Fehler
30.08.2018 20:46:24
fcs
Hallo Andre,
ich hab die Erzeugung des Dateinamens für die Textdatei angepasst und die Zeile in der Export-Daten für die Zeile 3 (Titelzeile?) generiert werden.
Gruß
Franz
Sub Exportieren()
Dim intFF As Integer
Dim iZeile As Long, iSpalte As Long
Dim strDatei As String, strTemp As String, strSep As String
strSep = vbTab              'Trennzeichen
Worksheets("Tabelle1").Activate
strDatei = "C:\Users\Vertriebsleitung\Documents\" _
& "XXX_" & Range("A3").Text & ".txt"
If Dir(strDatei)  "" Then
'Schreibschutz für erstellte Datei entfernen
VBA.FileSystem.SetAttr (strDatei), 0      '0 = normal ohne ReadOnly
End If
intFF = FreeFile
iZeile = 3                                 ' Variable für Zeilennummer
Open strDatei For Output As #intFF      ' Öffnet oder erstellt Textdatei zum _
hineinschreiben
For iSpalte = 1 To 4
'strTemp = strTemp & strSep & Cells(iZeile, iSpalte).Text
strTemp = strTemp & IIf(strTemp = "", "", strSep) & Cells(iZeile, iSpalte).Text
Next
Print #intFF, strTemp                   ' Zwischenspeicher in TXTDatei schreiben
iZeile = iZeile + 1                     ' Zeilenzähler erhöhen
Do Until Cells(iZeile, 3).Value = ""    ' Schleife: Laufe solange, bis Zelle in Spalte C  _
leer ist
strTemp = ""                          ' Zwischenspeicher zurücksetzen
' Zellwerte an Zwischenspeicher übergeben
For iSpalte = 1 To 4
strTemp = strTemp & IIf(strTemp = "", "", strSep)
Select Case iSpalte
Case 1, 2, 3, 4
'Zelleninhalte übernehmen wie angezeigt( Text, PLZ, Telefonnummern, Währungen)
strTemp = strTemp & Cells(iZeile, iSpalte).Text
Case Else 'Zellwert an Zwischenspeicher anfügen
strTemp = strTemp & Cells(iZeile, iSpalte).Value
End Select
Next
Print #intFF, strTemp                   ' Zwischenspeicher in TXTDatei schreiben
iZeile = iZeile + 1                     ' Zeilenzähler erhöhen
Loop                                    ' zurück zum Schleifenbeginn
Close #intFF                            ' schließt die Textdatei
'Schreibschutz für erstellte Datei setzen
VBA.FileSystem.SetAttr (strDatei), 1      '1 = ReadOnly
End Sub

Anzeige
AW: Makro Zeilen in .txt Datei kopieren -Fehler
31.08.2018 08:35:58
Andre_D
Hallo Franz,
läuft! Vielen Dank!
Gruß
Andre

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige