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

CSV-Teiler soll speichern können

Forumthread: CSV-Teiler soll speichern können

CSV-Teiler soll speichern können
09.04.2008 12:42:46
Chris
Hallo,
habe hier einen Code der mir eine CSV-Datei nach einer festgelegten Zeilenanzahl teilt.
Es werden also Datenblätter hinzugefügt bis keine Zeilen aus der Ursprungsdatei mehr übrig sind.
So, nun möchte ich gerne alle angelegten Tabellenblätter jeweils einzeln in eine CSV Datei schreiben
(z. B. 1.csv, 2.csv, 3.csv usw. bis keine Tabellenblätter mehr übrig sind). Da ich aber fast keine Kenntnisse
mit VBA habe wüsste ich jetzt auch nicht wo ich ansetzen soll. Ich hätte mir sowas gedacht:
Dim i as integer
For i = i + 1
sheets(i).activate
sheets(i).saveas (i.csv)
next i
Nur weiß ich jetzt leider nicht wo ich das genau hinschreiben muss.
Bin für jeder Hilfe dankbar. In einem anderen Forum meinte jemand das das gar nicht geht.
Hier der Code wie er bis jetzt auch funktioniert.
Gruß

Public Function FileTeilen()
On Error GoTo Hell
Dim fso As New FileSystemObject, SR As TextStream
Dim datenfeld, Datenzeile, Datenstring As String
Dim rcount As Double, mcount As Integer, x As Integer
Dim datensheet As Variant
Dim y As String
y = InputBox("Bitte geben Sie die Anzahl an, bei der gesplittet werden soll!", "Filetransfer")
Set SR = fso.OpenTextFile(Application.GetOpenFilename)
mcount = 1
rcount = 0
ReDim datenfeld(y, 200)
Do
Datenstring = SR.ReadLine
Datenzeile = Split(Datenstring, ";")
For x = 0 To UBound(Datenzeile)
datenfeld(rcount, x) = Datenzeile(x)
Next
rcount = rcount + 1
If rcount > y Then
Set datensheet = Sheets.Add
datensheet.Range("A1").Resize(UBound(datenfeld, 1), UBound(datenfeld, 2)) = datenfeld
mcount = mcount + 1
rcount = 0
Erase datenfeld
ReDim datenfeld(y, 200)
End If
Loop While Not SR.AtEndOfStream
Set datensheet = Sheets.Add
datensheet.Range("A1").Resize(UBound(datenfeld, 1), UBound(datenfeld, 2)) = datenfeld
Hell:
MsgBox Err.Description, vbCritical, "Ein Fehler ist aufgetreten!"
Exit Function
End Function


Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CSV-Teiler soll speichern können
09.04.2008 12:59:00
Rudi
Hallo,
probiers mal.

Public Function FileTeilen()
On Error GoTo Hell
Dim fso As New FileSystemObject, SR As TextStream
Dim datenfeld, Datenzeile, Datenstring As String
Dim rcount As Double, mcount As Integer, x As Integer
Dim datensheet As Variant
Dim y As String
y = InputBox("Bitte geben Sie die Anzahl an, bei der gesplittet werden soll!", "Filetransfer")
Set SR = fso.OpenTextFile(Application.GetOpenFilename)
mcount = 1
rcount = 0
ReDim datenfeld(y, 200)
Open "c:\Temp\" & mcount & ".csv" For Output As #1 'anpassen
Do
Datenstring = SR.ReadLine
Print #1, Datenstring
Datenzeile = Split(Datenstring, ";")
For x = 0 To UBound(Datenzeile)
datenfeld(rcount, x) = Datenzeile(x)
Next
rcount = rcount + 1
If rcount > y Then
Set datensheet = Sheets.Add
datensheet.Range("A1").Resize(UBound(datenfeld, 1), UBound(datenfeld, 2)) = datenfeld
mcount = mcount + 1
rcount = 0
Erase datenfeld
ReDim datenfeld(y, 200)
Close 1
Open "c:\Temp\" & mcount & ".csv" For Output As #1  'anpassen
End If
Loop While Not SR.AtEndOfStream
Set datensheet = Sheets.Add
datensheet.Range("A1").Resize(UBound(datenfeld, 1), UBound(datenfeld, 2)) = datenfeld
Close 1
Hell:
MsgBox Err.Description, vbCritical, "Ein Fehler ist aufgetreten!"
Exit Function
End Function


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: CSV-Teiler soll speichern können
09.04.2008 13:21:25
Chris
Hallo,
wow, klappt auf Anhieb perfekt. Echt super. Dickes Lob dafür.
Eine Frage dazu noch. Wenn ich praktisch wie beim öffnen der Urspungsdatei so ein Fenster mit Verzeichnisauswahl vor dem Speichern machen möchte, wlechen Syntax muss ich da verwenden bzw. geht das überhaupt?
Wenn nicht hätte ich es eben so gelößt:
Dim z as string
z = InputBox("Bitte geben Sie das Zielverzechnis an!", "Filetransfer")
Open z & mcount & ".csv" For Output As #1 'anpassen
Gruß
Anzeige
;

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