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

Forumthread: EXCEL-Datei Splitten per MAKRO

EXCEL-Datei Splitten per MAKRO
JOE-ALF
Hallo zusammen,
ich müsste eine größere Excel-Datei in Abhängigkeit der Spalte A (sofern ein neuer Eintrag) in _ mehrere Dateien aufteilen und abspeichern. Dazu habe ich auch ein MAKRO gefunden. Allerdings müsste nun noch die Fußzeile, der Drucktitel und das Format (Größe der Schrift, Zeilenhöhe etc.) von der Ursprungsdatei übernommen werden. Ebenso wäre es schön, wenn das Tabellenblatt den Namen der Datei hat. Könnte mir jemand den Code umbauen? Habe leider noch nicht so viel Kentnisse. Danke schon Mal ...

Sub splitten()
Dim wbMappe As Workbook, _
wbMappeAlt As Workbook, _
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
Do
'falls vorhanden, die letzte Mappe speichern + schließen
If Not wbMappeAlt Is Nothing Then
wbMappeAlt.SaveAs Filename:=strPfad & _
CStr(wbMappeAlt.Sheets(1).Cells(2, 1).Value) & ".xls"
wbMappeAlt.Close
Set wbMappeAlt = Nothing
End If
'nächsten Bruch suchen
lngZeile = 2 'wegen der Überschriften in Z. 2 beginnen!
Do
lngZeile = lngZeile + 1
'wenn Ende, dann Ende
If Cells(lngZeile, 1) = "" Then Exit Do
Loop Until Cells(lngZeile, 1)  Cells(lngZeile - 1, 1)
'wenn Ende, dann Ende
If Cells(lngZeile, 1) = "" Then Exit Do
'Rest ausschneiden und in neue Mappe verschieben
Range(Cells(lngZeile, 1), Cells(ActiveSheet.UsedRange.Rows.Count, _
ActiveSheet.UsedRange.Columns.Count)).Cut
Set wbMappeAlt = ActiveWorkbook 'Alte Mappe merken
Set wbMappe = Workbooks.Add
Application.Goto wbMappe.Sheets(1).Cells(2, 1)
ActiveSheet.Paste
wbMappeAlt.Sheets(1).Rows(1).Copy Destination:=ActiveSheet.Rows(1)
Application.CutCopyMode = False
Loop
'Am Ende die Aktive Mappe speichern und schließen.
ActiveWorkbook.SaveAs Filename:=strPfad & _
CStr(ActiveWorkbook.Sheets(1).Cells(2, 1).Value) & ".xls"
ActiveWorkbook.Close
End Sub

VB, JOE-ALF

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: EXCEL-Datei Splitten per MAKRO
04.09.2012 20:36:50
fcs
Hallo Joe-Alf,
damit die Übernahme der Information aus "Seite-einrichten" funktioniert hab ich einen anderen Weg beschritten.
1. Statt nur die Daten in die temporäre Arbeitsmappe zu kopieren wird das aktive Blatt komplett mit allem Drum-und-Dran in eine neue Arbeitsmappe kopiert.
2. Aus dem kopierten Blatt wird ein Muster erstellt, das nur noch die Daten aus der 1. Zeile (=Titelzeile?) enthält.
3. Bei Wertewechsel in Spalte A wird immer das Musterblatt kopiert und anschliessend der Zeilenblock mit den Daten. Dann Blatt umbenannt und Datei gespeichert.
4. Nach Abschluss der Kopiervorgänge wird die temporäre Arbeitsmappe ohne Speichern geschlossen.
In der Text-Datei sind auch noch 2 Test-Zeilen (vor und nach dem Speichern der Dateien). Diese unterdrücken die Warnmeldung, wenn Datei mit identischem Namen schon vorhanden. Diese 2 Zeilen kannst du auch wieder löschen.
Gruß
Franz
Textdatei mit Code: https://www.herber.de/bbs/user/81704.txt
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Excel-Datei in mehrere Dateien aufteilen mit Makros


Schritt-für-Schritt-Anleitung

Um eine Excel-Datei in mehrere Dateien aufzuteilen, kannst du ein Makro verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Deine Excel-Datei: Stelle sicher, dass die Daten in Spalte A nach den gewünschten Kriterien geordnet sind.
  2. Öffne den VBA-Editor:
    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Füge ein neues Modul hinzu:
    • Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)" und wähle "Einfügen" > "Modul".
  4. Kopiere den folgenden Code in das Modul:
Sub splitten()
    Dim wbMappe As Workbook, _
    wbMappeAlt As Workbook, _
    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
    Do
        If Not wbMappeAlt Is Nothing Then
            wbMappeAlt.SaveAs Filename:=strPfad & _
            CStr(wbMappeAlt.Sheets(1).Cells(2, 1).Value) & ".xls"
            wbMappeAlt.Close
            Set wbMappeAlt = Nothing
        End If
        lngZeile = 2
        Do
            lngZeile = lngZeile + 1
            If Cells(lngZeile, 1) = "" Then Exit Do
        Loop Until Cells(lngZeile, 1) <> Cells(lngZeile - 1, 1)
        If Cells(lngZeile, 1) = "" Then Exit Do
        Range(Cells(lngZeile, 1), Cells(ActiveSheet.UsedRange.Rows.Count, _
        ActiveSheet.UsedRange.Columns.Count)).Cut
        Set wbMappeAlt = ActiveWorkbook 
        Set wbMappe = Workbooks.Add
        Application.Goto wbMappe.Sheets(1).Cells(2, 1)
        ActiveSheet.Paste
        wbMappeAlt.Sheets(1).Rows(1).Copy Destination:=ActiveSheet.Rows(1)
        Application.CutCopyMode = False
    Loop
    ActiveWorkbook.SaveAs Filename:=strPfad & _
    CStr(ActiveWorkbook.Sheets(1).Cells(2, 1).Value) & ".xls"
    ActiveWorkbook.Close
End Sub
  1. Passen Sie den Speicherort an: Ändere den strPfad im Code, um den gewünschten Speicherort für die neuen Dateien festzulegen.
  2. Führe das Makro aus: Drücke F5 oder gehe zurück zu Excel und führe das Makro über Entwicklertools > Makros aus.

Häufige Fehler und Lösungen

  • Excel Drucktitel ausgegraut: Stelle sicher, dass Du die richtige Seite eingerichtet hast und die Drucktitel eingestellt sind, bevor Du das Makro ausführst.
  • Makro läuft nicht: Überprüfe, ob Makros in Excel aktiviert sind. Gehe dazu auf Datei > Optionen > Sicherheitscenter > Einstellungen für das Sicherheitscenter > Einstellungen für Makros.
  • Dateien werden nicht gespeichert: Achte darauf, dass der angegebene Pfad existiert und Du die nötigen Berechtigungen hast.

Alternative Methoden

Wenn Du keine Makros verwenden möchtest, kannst Du die Excel-Tabelle manuell aufteilen:

  1. Daten filtern: Verwende den Autofilter, um die Daten zu filtern und kopiere die gefilterten Daten in neue Arbeitsblätter oder -dateien.
  2. Power Query: Mit Power Query kannst Du Daten transformieren und in separaten Tabellen speichern.

Praktische Beispiele

Beispiel 1: Du möchtest eine Excel-Tabelle aufteilen und einzeln speichern, basierend auf den Werten in Spalte A. Das Makro oben erledigt dies automatisch für Dich.

Beispiel 2: Bei der Verwendung von Power Query kannst Du die Schritte zur Aufteilung der Daten definieren und anschließend die Ergebnisse in ein neues Arbeitsblatt exportieren.


Tipps für Profis

  • Datenvalidierung: Achte darauf, dass die Daten in Spalte A konsistent sind, um fehlerhafte Splits zu vermeiden.
  • Automatisiere den Prozess: Integriere das Makro in eine Schaltfläche in Deiner Excel-Oberfläche, um den Prozess zu vereinfachen.
  • Backup Deiner Daten: Bevor Du die Datei aufteilst, erstelle immer ein Backup, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Wie viele Dateien kann ich mit diesem Makro gleichzeitig speichern?
Das Makro speichert eine Datei für jeden eindeutigen Wert in Spalte A, solange genügend Speicherplatz verfügbar ist.

2. Kann ich das Makro anpassen, um mehr Informationen zu speichern?
Ja, Du kannst den Code anpassen, um weitere Zellen oder Formate zu berücksichtigen, indem Du die entsprechenden Zeilen im VBA-Code änderst.

3. Funktioniert dieses Makro in Excel 365?
Ja, das Makro ist mit Excel 2016, 2019 und Excel 365 kompatibel.

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