Hallo Chris,
das geht nicht so, da einzelne Tabellenblätter, wie schon geschieben, nicht zu speichern sind, sondern nur Arbeitsmappen (Workbook). Du solltest also anstatt neuer Tabellenblääter neue Worksheets anlegen, in die du die Segmente hineinkopierst.
Ich glaube darüber hinaus, dass die Logik deines Makros nicht ganz stimmt, z.B. hat rcount immer den Wert 0 oder 1. Vielleicht gehört rcount=rcount+1 in die For-Next-Schleife? Das Exit Sub soll wohl vor der Hell:-Adresse stehen.
Viel Erfolg
Holger
Chris schrieb am 09.04.2008 12:25:20:
Hallo,
vielen Dank für die Antwort,
könnte ich das nicht so ungefähr machen:
Dim i as integer
for i = i + 1
sheet(i).activate
sheet(i).saveas(i.csv)
next i
oder hab ich da einen Denkfehler drin.
Gruß
Holger schrieb am 09.04.2008 11:34:57:
Hallo Chris,
du kannst m.E. keine einzelnen Tabellenblätter speichern. Wenn du sie trennen willst, solltest du die einzelnen Stücke nicht in Tabellenblättern, sondern einzelnen Arbeitsmappen speichern. Also nicht Sheet.Add, sondern Workbook.Add und noch einige kleinere Änderungen.
Gruß
Holger
Chris schrieb am 08.04.2008 16:25:19:
Hallo,
habe diesen Code der mir eine CSV Datei mit beliebig vielen Datensätzen aufsplittet. D. h. ich gebe die Anzahl ein bei der gesplittet werden soll und dann werden Tabellenblätter angelegt und befüllt. Klappt auch alles super.
Nun möchte ich gerne alle vorhandenen Tabellenblätter jeweils einzeln (z. B. 1.csv, 2.csv, 3.csv usw.) als CSV in ein Verzeichnis speichern. Nur weiß ich leider nicht wie das geht.
Kann mir hier vielleicht jemand helfen?
Danke schonmal und 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
|