Wie kann man eine Excel-Datei (.xlsx), die mehrere Blätter enthält, in ein separates Blatt [n] .xlsx "aufteilen"?

102373
jhstuckey

Ich denke, der Titel sagt alles für diese Frage aus, aber um noch ein wenig weiter auszuführen:

Ich habe eine .xlsx-Datei, die einige Dutzend Blätter enthält. Ich möchte alle diese Blätter als separate XLSX-Dateien ausgeben. Eine automatisierte Benennung von ihnen ist nicht erforderlich. Hat Excel eine Funktion zum Exportieren von Arbeitsblättern in eine separate Datei?

14

3 Antworten auf die Frage

16
Peter Albert

Es ist keine integrierte Funktion.

Wenn Sie diesen Code ausführen, sollte dies jedoch die Aufgabe erfüllen.

Sub SaveSheets() Dim strPath As String Dim ws As Worksheet  Application.ScreenUpdating = False  strPath = ActiveWorkbook.Path & "\" For Each ws In ThisWorkbook.Sheets ws.Copy 'Use this line if you want to break any links: BreakLinks Workbooks(Workbooks.Count) Workbooks(Workbooks.Count).Close True, strPath & ws.Name & ".xlsx" Next  Application.ScreenUpdating = True End Sub  Sub BreakLinks(wb As Workbook) Dim lnk As Variant For Each lnk In wb.LinkSources(xlExcelLinks) wb.BreakLink lnk, xlLinkTypeExcelLinks Next End Sub 

Gehen Sie folgendermaßen vor, um den Code auszuführen:

  1. Öffnen Sie den VBA-Editor ( Alt+ F11)
  2. Klicken Sie mit der rechten Maustaste in der Baumstruktur oben links auf Ihre Arbeitsmappe und fügen Sie ein neues Modul ein
  3. Kopieren Sie den obigen Code in dieses Modul
  4. Schließen Sie den VBA-Editor
  5. Drücken Sie in Excel Alt+ F8, um Makros auszuführen und auszuwählenSaveSheets

oder siehe Wie füge ich VBA in MS Office hinzu?

Vielen Dank! Was ist mit dem Gegenteil - um es wieder zusammenzusetzen? Diese Excel-Datei enthielt anscheinend "Links" (diese Funktion wurde bisher noch nicht verwendet), und nach dem Aufteilen kann Excel die Links nicht finden (sucht nach dem ersten Blatt). Gibt es sie, um sie zu teilen und gleichzeitig die Links zu aktualisieren / oder einfach nur die Links zu aktualisieren? jhstuckey vor 11 Jahren 0
Die Frage ist, wie Sie mit den Links umgehen möchten. Sie können sie leicht durch Werte ersetzen, indem Sie nach dem Kopieren von "ws.Copy" "Workbooks (Workbooks.Count) .BreakLinks" einfügen. Peter Albert vor 11 Jahren 1
Nachdem ich eine Arbeitsmappe geöffnet hatte, forderte mich ein Popup-Fenster in Excel auf, die Verknüpfungen zu korrigieren. Ich habe durch dieses Dialogfeld geklickt und nun funktionieren die Links für alle Dateien. Ich frage mich jedoch, ob dies in der Datei oder lokal gespeichert wurde ... jhstuckey vor 11 Jahren 0
Wenn Sie sagen, ersetzen Sie sie mit Werten durch Workbooks (Workbooks.Coun). BreakLinks, meinen Sie, die Links werden gelöscht, oder ...? Ich denke, der beste Weg, um mit ihnen umzugehen, besteht einfach darin, sie wegzulassen (dh wenn Benutzer die nun getrennten Excel-Dateien öffnen, sehen sie keine Warnung vor fehlerhaften Links). jhstuckey vor 11 Jahren 0
Entschuldigung, probieren Sie `Workbooks (Workbooks.Count) .BreakLink` - ohne die` s` am Ende Peter Albert vor 11 Jahren 0
eine Möglichkeit, dies in libre (LibreOffice Calc) zu tun? Oki Erie Rinaldi vor 7 Jahren 0
11
Der Hochstapler
  1. Wenn Sie mit der rechten Maustaste auf die Registerkarte einer Excel-Tabelle klicken, können Sie Verschieben oder Kopieren auswählen.

    enter image description here

  2. Im daraufhin angezeigten Dialog können Sie ein Ziel-Arbeitsbuch auswählen. Wählen Sie (neues Buch) .

    enter image description here

  3. Klicken Sie auf OK . Ihr Blatt befindet sich jetzt in einem neuen Dokument.

5
hrvoj3e

Ich habe die Lösung von Peter Albert ausprobiert, die für mich nicht funktioniert hat. Daher habe ich in diesem Beitrag eine Lösung gefunden ("Excel - Arbeitsblätter als separate Dateien speichern") bei Diary of a Computer Geek .

Es funktioniert super Sie sollten Blätter, die Punkte enthalten, umbenennen, um korrekt benannte Dateien mit .xlsErweiterungen zu erhalten.

Sub CreateNewWBS() Dim wbThis As Workbook Dim wbNew As Workbook Dim ws As Worksheet Dim strFilename As String  Set wbThis = ThisWorkbook For Each ws In wbThis.Worksheets strFilename = wbThis.Path & "/" & ws.Name ws.Copy Set wbNew = ActiveWorkbook wbNew.SaveAs strFilename wbNew.Close Next ws End Sub 

Verwenden Sie die Anweisungen zum Erstellen und Ausführen dieses Makros aus dem Beitrag von Peter Albert oder aus Wie kann ich VBA in MS Office hinzufügen?

Ich habe auch die Lösung von Peter Albert ausprobiert und es gab einen Fehler "Laufzeitfehler" 13: Typenkonflikt. Zum Glück funktioniert die Lösung in dieser Antwort für mich. Bin vor 8 Jahren 1
Wie kann ich die vorhandenen Dateien mit demselben Namen überschreiben? DAE vor 6 Jahren 0
Ich brauchte das nicht, weil jeder Dump in einem separaten Ordner abgelegt wird. Versuchen Sie es vielleicht [diesen Thread] (https://stackoverflow.com/a/14634781/2450431) hrvoj3e vor 6 Jahren 0