Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
964to968
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
964to968
964to968
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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


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ß

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige