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?
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:
Öffnen Sie den VBA-Editor ( Alt+ F11)
Klicken Sie mit der rechten Maustaste in der Baumstruktur oben links auf Ihre Arbeitsmappe und fügen Sie ein neues Modul ein
Kopieren Sie den obigen Code in dieses Modul
Schließen Sie den VBA-Editor
Drücken Sie in Excel Alt+ F8, um Makros auszuführen und auszuwählenSaveSheets
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
Wenn Sie mit der rechten Maustaste auf die Registerkarte einer Excel-Tabelle klicken, können Sie Verschieben oder Kopieren auswählen.
Im daraufhin angezeigten Dialog können Sie ein Ziel-Arbeitsbuch auswählen. Wählen Sie (neues Buch) .
Klicken Sie auf OK . Ihr Blatt befindet sich jetzt in einem neuen Dokument.
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
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