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

Textdatei letzte leere Zeile (VBA)

Textdatei letzte leere Zeile (VBA)
23.10.2022 18:09:31
kwn
Sehr geehrte Damen und Herren,
Ich benötige bitte einen Rat bezüglich folgender Aufgabenstellung:
Im Arbeitsblatt "DAT" werden per Formeln Daten aus einem anderen Blatt angezeigt.
Diese können, je nach importierten Quelle, unterschiedliche Zeilenanzahl haben.
Aus dieser einen Spalte soll eine Textdatei erzeugt werden, jedoch ohne letzte leere Zeile.
Ich hatte schon den Beitrag von 2005 entdeckt, allerdings weiß ich nicht, wie man diesen Code auf eine Range anwenden kann. (https://www.herber.de/forum/archiv/572to576/574694_Letzte_Zeile_in_Textdatei_immer_leer.html)
Datei:
https://www.herber.de/bbs/user/155802.xlsm

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textdatei letzte leere Zeile (VBA)
24.10.2022 09:42:10
Yal
Hallo kwn,
dein Problem ist ein anderes als in dem gegebenen Beitrag: Du musst zuerst ermitteln, in welcher Zeile die letzte sinnvolle Berechnung vorliegt.
(Du hast übrigens mit dem Klammer direkt an der URL die Verlinkung "versaut". Ein Leerzeichen davor und danach ist nötig:
( https://www.herber.de/forum/archiv/572to576/574694_Letzte_Zeile_in_Textdatei_immer_leer.html )
Du brauchst dafür eine Spalte, bei der die "Berechnung ohne Quelle" eine zuverlässige Unterscheidung zu den anderen. Im folgenden Code habe ich Spalte 1 verwendet und eine Leerzelle als "nicht befüllt" interpretiert.

Sub test()
'Unter Anbindung (Extras, Verweise..) der Library "Microsoft Scripting Runtime"
Dim FSO  As New FileSystemObject 'siehe Anmerkung "Anbindung"
Dim ff As TextStream 'siehe Anmerkung "Anbindung"
Dim LetzteZeile As Long
Dim i As Long
With Worksheets("DAT")
'Ermitteln des letzte Zeile
LetzteZeile = .Cells(Rows.Count, 1).End(xlUp).Row
Do While .Cells(LetzteZeile, 1) = "" And LetzteZeile > 0
LetzteZeile = LetzteZeile - 1
Loop
'Übertrag in die Datei
If LetzteZeile > 0 Then
Set ff = FSO.CreateTextFile("C:\Temp\H_Forum\Test.csv")
For i = 1 To LetzteZeile
ff.WriteLine Join(Application.Transpose(Application.Transpose(Intersect(.Rows(i), .UsedRange))), ";")
Next
End If
End With
ff.Close
Set FSO = Nothing
End Sub
Ungetestet, da ich kein "Material" zur Verfügung habe.
VG
Yal
Anzeige
AW: Textdatei letzte leere Zeile (VBA)
24.10.2022 20:05:06
kwn
Hallo Yal,
vielen Dank für deine Antwort. Sorry wegen dem Link...
Ich dachte, dass ich eine Datei mit hochgeladen hatte. Hier nochmal eine im xls-Format ohne Makros.
https://www.herber.de/bbs/user/155820.xls
Zu dem Code: Leider bleibt bei mir weiterhin eine letzte leere Zeile und zudem werden alle verwendeten Spalten mit dem Trennzeichen ";" in die Textdatei geschrieben.
Ich erkläre es mal deutlicher... (so gut wie alle Zeilen werden durch Formeln erstellt, das "ENDE" unten erscheint, wenn die Daten vom Importblatt nicht zutreffen als sichtbare Hilfe - zuvor war es "" oder " " oder 0)
Quelldatenbeispiel (2 Spalten, die zweite Spalte unterstützt die Formeln in der ersten, können natürlich auch in ein Hilfsdatenblatt verschoben werden):
-----
6
1396
112
1,20
20
0
6 1
Test1 1
Test1 1
K1,K2,K3,K4,K5,K6 1
Test2 1
1 1
Kommentar 2
6 2
Test3 2
Test3 2
K7,K8,K9,K0,K1,K2 2
Test4 2
1 2
Kommentar 3
ENDE 3
ENDE 3
ENDE 3
ENDE 3
ENDE 3
ENDE 3
ENDE 3
-----
Zieldaten bei Ausgabe in Textdatei:
-----
6
1396
112
1,20
20
0
6
Test1
Test1
K1,K2,K3,K4,K5,K6
Test2
1
Kommentar
6
Test3
Test3
K7,K8,K9,K0,K1,K2
Test4
1
Kommentar
-----
Zieldaten in Textdatei erwünscht:
-----
6
1396
112
1,20
20
0
6
Test1
Test1
K1,K2,K3,K4,K5,K6
Test2
1
Kommentar
6
Test3
Test3
K7,K8,K9,K0,K1,K2
Test4
1
Kommentar
-----
Vielleicht macht es Sinn, dass VBA die Textdatei nochmal öffnet und die zuvor berechnete Zeilenanzahl -1 irgendwie findet, löscht und die Datei wieder speichert?
Grüße kwn
Anzeige
AW: Textdatei letzte leere Zeile (VBA)
24.10.2022 23:29:05
Yal
Hallo kwn,
noch einfacher:

Sub InDatei_schreiben()
'Unter Anbindung (Extras, Verweise..) der Library "Microsoft Scripting Runtime"
Dim FSO  As New FileSystemObject 'siehe Anmerkung "Anbindung"
Dim ff As TextStream 'siehe Anmerkung "Anbindung"
Dim Z As Range
Set ff = FSO.CreateTextFile("C:\Temp\H_Forum\Test.csv")
With Worksheets("DAT")
For Each Z In Range(.Range("A1"), .Cells(Rows.Count, 1).End(xlUp))
If Z.Value = "ENDE" Then Exit For
tt.writeline Z.Value
Next
End With
ff.Close
Set FSO = Nothing
End Sub
Deine Erklärung ist nicht deutlicher, sondern nur einfach vollständig.
Hast Du etwa eine Datei mit Makro als ".xls" gespeichert? Es sind zwar 5 Modul vorhanden, aber darin absolut kein Code.
VG
Yal
Anzeige
AW: Textdatei letzte leere Zeile (VBA)
25.10.2022 01:08:37
kwn
Hall Yal,
danke für deinen Einsatz, das lässt die Datei leider immer noch nicht mit Text sondern einer zusätzlichen leeren Zeile enden.
(Ich hatte tt.writeline noch in ff.writeline geändert, stimmt doch oder?)
Ich bin neu in diesem Forum und hatte vermutet, dass sich wohl eher wer die xls-Datei anschaut, wenn keine Makros drin sind. Hab diese quasi aus Vorsichtsgründen rausgenommen.
Grüße kwn
AW: Textdatei letzte leere Zeile (VBA)
25.10.2022 09:15:24
Yal
Hallo kwn,
dann vielleicht vorausschauend handeln:

Sub InDatei_schreiben()
'Unter Anbindung (Extras, Verweise..) der Library "Microsoft Scripting Runtime"
Dim FSO  As New FileSystemObject 'siehe Anmerkung "Anbindung"
Dim ff As TextStream 'siehe Anmerkung "Anbindung"
Dim Z As Range
Set ff = FSO.CreateTextFile("C:\Temp\H_Forum\Test.csv")
With Worksheets("DAT")
For Each Z In Range(.Range("A1"), .Cells(Rows.Count, 1).End(xlUp))
If Z.Offset(1).Value = "ENDE" Then
tt.Write Z.Value
Exit For
Else
tt.WriteLine Z.Value
End If
Next
End With
ff.Close
Set FSO = Nothing
End Sub
Willkommen im Forum. Es gibt keine Anleitung über Dos & donts. Und jede Beantwortende hat seine eigene "Vorliebe". Einfach sich nicht verunsichern lassen.
VG
Yal
Anzeige
AW: Textdatei letzte leere Zeile (VBA)
25.10.2022 21:21:40
kwn
Der Hammer, Dankeschön!!
Grüße kwn
AW: Textdatei letzte leere Zeile (VBA)
24.10.2022 11:32:36
snb

Sub M_snb()
sheets("DAT").copy
with activeworkbook
.sheets(1).usedrange.offset(,1).clearcontents
.saveas "C:\Temp\H_Forum\Test.csv",23
.close 0
end with
End Sub

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige