Nochmal Bitte sehr!
05.08.2009 16:29:00
Wolli
Hallo Klaus, ich hatte gehofft, dass Du das nicht willst, denn es ist etwas fummelig. :-)) Müsste aber gehen wie gewünscht. Passe bitte noch den Pfad an. Die Dateien werden dort hineingespeichert und geschlossen.
Gruß, Wolli
Sub splitten()
Dim wbMappe As Workbook, _
wbMappeAlt As Workbook, _
shBlatt As Worksheet, _
lngZeile As Long, _
strPfad As String
'Pfad festlegen (mit "\")
strPfad = "C:\Temp\"
'Erstmal alles in eine neue Mappe schaufeln
ActiveSheet.UsedRange.Cut
Set wbMappe = Workbooks.Add
wbMappe.Sheets(1).Paste
Application.CutCopyMode = False
Set shBlatt = ActiveSheet
Do
'falls vorhanden, die letzte Mappe speichern + schließen
If Not wbMappeAlt Is Nothing Then
wbMappeAlt.SaveAs Filename:=strPfad & _
CStr(wbMappeAlt.Sheets(1).Cells(1, 1).Value) & ".xls"
wbMappeAlt.Close
Set wbMappeAlt = Nothing
End If
'nächsten Bruch suchen
lngZeile = 1
Do
lngZeile = lngZeile + 1
'wenn Ende, dann Ende
If shBlatt.Cells(lngZeile, 1) = "" Then Exit Do
Loop Until shBlatt.Cells(lngZeile, 1) Cells(lngZeile - 1, 1)
'wenn Ende, dann Ende
If shBlatt.Cells(lngZeile, 1) = "" Then Exit Do
'Rest ausschneiden und in neue Mappe verschieben
Range(shBlatt.Cells(lngZeile, 1), shBlatt.Cells(shBlatt.UsedRange.Rows.Count, _
shBlatt.UsedRange.Columns.Count)).Cut
Set wbMappeAlt = ActiveWorkbook 'Alte Mappe markieren
Set wbMappe = Workbooks.Add
Set shBlatt = wbMappe.Sheets(1)
wbMappe.Sheets(1).Paste
Application.CutCopyMode = False
Loop
'Am Ende die Aktive Mappe speichern und schließen.
ActiveWorkbook.SaveAs Filename:=strPfad & _
CStr(ActiveWorkbook.Sheets(1).Cells(1, 1).Value) & ".xls"
ActiveWorkbook.Close
End Sub