Einzelne Zeilen in neue .xls exportieren

  • Excel

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von mtoebben.

    Einzelne Zeilen in neue .xls exportieren

    Hallo zusammen,

    ich würde gerne ein VB-Script schreiben, welches aus einer vorhanden Excel-Datei einzelne Zeilen in neue .xls exportiert.
    So soll z.B. eine Exceldatei mit insgesamt 1000 Zeilen in entsprechend 1000 Excel-Dateien aufgesplittet werden (1 Zeile pro Datei).
    Optimal wäre es, wenn diese Datei sich zudem automatisch nach einer Zelle innerhalb der Zeile benennt, sprich eine Zelle innerhalb der Zeile enthält Text, welcher beim Export als Dateinnamen (XYZ.xls) verwendet werden soll.

    Kann mir damit vielleicht jemand helfen? Die Erfahrung reicht leider (bislang) noch nicht :)

    Besten Dank vorab,
    Mathias

    Visual Basic-Quellcode

    1. Sub blubb()
    2. Const cPfad As String = "C:\TEMP\"
    3. Dim i As Long
    4. Dim wb As Workbook
    5. Dim ws, wbSRC As Worksheet
    6. Set wbSRC = ActiveSheet 'In deiner Mappe mit allen Zeilen..
    7. For i = 1 To 1000
    8. Set wb = Workbooks.Add
    9. Set ws = wb.Sheets(1)
    10. ws.Rows(1).Value = wbSRC.Rows(i).Value
    11. wb.Close SaveChanges:=True, Filename:= _
    12. CStr(cPfad & wbSRC.Range("A" & i).Value & ".xls")
    13. Set ws = Nothing
    14. Set wb = Nothing
    15. Next
    16. Set wbSRC = Nothing
    17. MsgBox "ok"
    18. End Sub
    Hallo zusammen,

    nochmal eine kleine Frage hierzu:

    Visual Basic-Quellcode

    1. Sub blubb()
    2. Const cPfad As String = "file://localhost/Users/mtoebben/Desktop/Test/"
    3. Dim i As Long
    4. Dim wb As Workbook
    5. Dim ws, wbSRC As Worksheet
    6. Set wbSRC = ActiveSheet 'In deiner Mappe mit allen Zeilen..
    7. For i = 2 To 2
    8. Set wb = Workbooks.Add
    9. Set ws = wb.Sheets(1)
    10. ws.Rows(1).Value = wbSRC.Rows(1).Value
    11. ws.Rows(1).Font.Bold = True
    12. ws.Rows(2).Value = wbSRC.Rows(i).Value
    13. wb.Close SaveChanges:=True, Filename:= _
    14. CStr(cPfad & wbSRC.Range("A" & i).Value & ".xls")
    15. Set ws = Nothing
    16. Set wb = Nothing
    17. Next
    18. Set wbSRC = Nothing
    19. MsgBox "ok"
    20. End Sub


    Gerne würde ich die Formatierung der Rows mit in die neue Datei übernehmen. Scheint mit copy/paste special irgendwie nicht zu funktionieren :-/

    Kann mir da jemand weiterhelfen? Wäre toll!

    Veieln Dank!
    Mathias

    Visual Basic-Quellcode

    1. Sub blubb()
    2. Const cPfad As String = "file://localhost/Users/mtoebben/Desktop/Test/"
    3. Dim i As Long
    4. Dim wb As Workbook
    5. Dim ws, wbSRC As Worksheet
    6. Set wbSRC = ActiveSheet 'In deiner Mappe mit allen Zeilen..
    7. For i = 2 To 4
    8. Set wb = Workbooks.Add
    9. Set ws = wb.Sheets(1)
    10. wbSRC.Rows(1).Copy ws.Rows(1) 'Header immer
    11. wbSRC.Rows(i).Copy ws.Rows(2) 'Daten
    12. wb.SaveAs _
    13. Filename:=CStr(cPfad & _
    14. wbSRC.Range("A" & i).Value & ".xls"), _
    15. FileFormat:=xlExcel8
    16. wb.Close SaveChanges:=False
    17. Set ws = Nothing
    18. Set wb = Nothing
    19. Next
    20. Set wbSRC = Nothing
    21. MsgBox "ok"
    22. End Sub
    Spitze! Vielen Dank!!!! :)

    Habe noch ne autofit-Funktion eingebaut und jetzt ist es optimal!

    Visual Basic-Quellcode

    1. Sub blubb()
    2. Const cPfad As String = "file://localhost/Users/mtoebben/Desktop/Test/"
    3. Dim i As Long
    4. Dim wb As Workbook
    5. Dim ws, wbSRC As Worksheet
    6. Set wbSRC = ActiveSheet 'In deiner Mappe mit allen Zeilen..
    7. For i = 2 To 4
    8. Set wb = Workbooks.Add
    9. Set ws = wb.Sheets(1)
    10. wbSRC.Rows(1).Copy ws.Rows(1) 'Header immer
    11. wbSRC.Rows(i).Copy ws.Rows(2) 'Daten
    12. ws.Rows(2).EntireColumn.AutoFit
    13. wb.SaveAs _
    14. Filename:=CStr(cPfad & _
    15. wbSRC.Range("A" & i).Value & ".xls"), _
    16. FileFormat:=xlExcel8
    17. wb.Close SaveChanges:=False
    18. Set ws = Nothing
    19. Set wb = Nothing
    20. Next
    21. Set wbSRC = Nothing
    22. MsgBox "ok"
    23. End Sub


    Vielen Dank für die Hilfe!

    Liebe Grüße,
    Mathias