Χωρίστε κάθε φύλλο Excel σε ξεχωριστά αρχεία (βήμα προς βήμα)

Παρακολουθήστε βίντεο - Πώς να χωρίσετε κάθε φύλλο Excel σε ξεχωριστά αρχεία

Εάν έχετε ένα βιβλίο εργασίας Excel με πολλά φύλλα εργασίας, δεν υπάρχει εύκολος τρόπος να χωρίσετε καθένα από αυτά τα φύλλα σε ξεχωριστά αρχεία Excel και να αποθηκεύσετε ξεχωριστά.

Αυτό μπορεί να χρειαστεί όταν τοποθετείτε φύλλα για διαφορετικούς μήνες ή περιοχές ή προϊόντα/πελάτες και θέλετε να λάβετε γρήγορα ένα ξεχωριστό βιβλίο εργασίας για κάθε φύλλο (ως αρχείο Excel ή ως PDF).

Παρόλο που υπάρχει ένας μη αυτόματος τρόπος να χωρίσετε φύλλα σε ξεχωριστά βιβλία εργασίας και στη συνέχεια να τα αποθηκεύσετε, είναι αναποτελεσματικό και επιρρεπές σε σφάλματα.

Σε αυτό το σεμινάριο, θα σας δώσω έναν απλό κώδικα VBA που μπορείτε να χρησιμοποιήσετε για να χωρίσετε γρήγορα (σε λίγα δευτερόλεπτα) όλα τα φύλλα εργασίας σε δικά τους ξεχωριστά αρχεία και στη συνέχεια να τα αποθηκεύσετε σε οποιονδήποτε καθορισμένο φάκελο.

Διαχωρίστε κάθε φύλλο εργασίας σε ξεχωριστό αρχείο Excel

Ας υποθέσουμε ότι έχετε ένα βιβλίο εργασίας όπως φαίνεται παρακάτω, όπου έχετε ένα φύλλο εργασίας για κάθε μήνα.

Για να χωρίσετε αυτά τα φύλλα σε ξεχωριστό αρχείο Excel, μπορείτε να χρησιμοποιήσετε τον παρακάτω κώδικα VBA:

'Κώδικας Δημιουργήθηκε από Sumit Bansal από trumpexcel.com Sub SplitEachWorksheet () Dim FPath As String FPath = Application.ActiveWorkbook.Path Application.ScreenUpdating = False Application.DisplayAlerts = False For Every ws In ThisWorkbook.Sheets ws.Copy Application.ActiveWorkbook Όνομα αρχείου: = FPath & "\" & ws.Name & ".xlsx" Application.ActiveWorkbook.Close False Next Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub

Υπάρχουν μερικά πράγματα που πρέπει να βεβαιωθείτε πριν χρησιμοποιήσετε τον παραπάνω κωδικό VBA:

  1. Δημιουργήστε ένα φάκελο όπου θέλετε να λάβετε όλα τα αρχεία που προκύπτουν.
  2. Αποθηκεύστε το κύριο αρχείο Excel (το οποίο έχει όλα τα φύλλα εργασίας που θέλετε ως ξεχωριστά αρχεία) σε αυτόν το φάκελο.

Μόλις το κάνετε αυτό, μπορείτε να βάλετε τον παραπάνω κώδικα VBA στο αρχείο και να εκτελέσετε τον κώδικα.

Ο παραπάνω κώδικας είναι γραμμένος με τρόπο ώστε να παίρνει τη θέση του φακέλου χρησιμοποιώντας τη διαδρομή του αρχείου (στην οποία εκτελείται ο κώδικας). Αυτός είναι ο λόγος για τον οποίο είναι σημαντικό να αποθηκεύσετε το αρχείο πρώτα στο φάκελο και στη συνέχεια να χρησιμοποιήσετε αυτόν τον κώδικα.

Πώς λειτουργεί ο κώδικας VBA - Ο παραπάνω κώδικας χρησιμοποιεί έναν απλό βρόχο For Next που περνά από κάθε φύλλο εργασίας, δημιουργεί ένα αντίγραφο του φύλλου εργασίας σε ένα βιβλίο εργασίας του Excel και στη συνέχεια αποθηκεύει αυτό το βιβλίο εργασίας του Excel στον καθορισμένο φάκελο (ο οποίος είναι ο ίδιος που έχει το κύριο αρχείο με όλα τα φύλλα).

Παρακάτω είναι τα βήματα για να τοποθετήσετε αυτόν τον κώδικα VBA στο βιβλίο εργασίας του Excel (αυτά θα είναι τα ίδια για όλες τις άλλες μεθόδους που εμφανίζονται σε αυτό το σεμινάριο):

Πού να βάλω αυτόν τον κωδικό;

Παρακάτω είναι τα βήματα για να τοποθετήσετε τον κώδικα στον επεξεργαστή Visual Basic όπου μπορεί να εκτελεστεί:

  • Κάντε κλικ στην καρτέλα Προγραμματιστής.
  • Στην ομάδα Κωδικός, κάντε κλικ στην επιλογή Visual Basic. Αυτό θα ανοίξει το πρόγραμμα επεξεργασίας VB. [Μπορείτε επίσης να χρησιμοποιήσετε τη συντόμευση πληκτρολογίου - ALT + F11]
  • Στο πρόγραμμα επεξεργασίας VB, κάντε δεξί κλικ σε οποιοδήποτε από τα αντικείμενα του βιβλίου εργασίας στο οποίο εργάζεστε.
  • Τοποθετήστε τον δείκτη του ποντικιού πάνω από την επιλογή Εισαγωγή
  • Κάντε κλικ στην ενότητα. Αυτό θα εισαγάγει μια νέα ενότητα
  • Κάντε διπλό κλικ στο αντικείμενο Module. Αυτό θα ανοίξει το παράθυρο κώδικα για τη μονάδα
  • Αντιγράψτε τον κωδικό VBA που παρέχεται παραπάνω και επικολλήστε τον στο παράθυρο κωδικού μονάδας.
  • Επιλέξτε οποιαδήποτε γραμμή στον κώδικα και κάντε κλικ στο πράσινο κουμπί αναπαραγωγής στη γραμμή εργαλείων για να εκτελέσετε τον κώδικα μακροεντολής VBA.

Τα παραπάνω βήματα θα χωρίσουν αμέσως τα φύλλα εργασίας σε ξεχωριστά αρχεία Excel και θα τα αποθηκεύσουν. Χρειάζεται μόνο ένα δευτερόλεπτο εάν έχετε μικρότερο αριθμό φύλλων εργασίας. Σε περίπτωση που έχετε πολλά, μπορεί να χρειαστεί λίγος χρόνος.

Το όνομα κάθε αποθηκευμένου αρχείου είναι το ίδιο με αυτό του ονόματος φύλλου που είχε στο κύριο αρχείο.

Δεδομένου ότι έχετε τοποθετήσει έναν κωδικό VBA στο βιβλίο εργασίας του Excel, πρέπει να τον αποθηκεύσετε με μορφή .XLSM (που είναι η μορφή με δυνατότητα μακροεντολής). Αυτό θα διασφαλίσει ότι η μακροεντολή αποθηκεύεται και λειτουργεί όταν ανοίξετε αυτό το αρχείο στη συνέχεια.

Σημειώστε ότι έχω χρησιμοποιήσει τις γραμμές Application.ScreenUpdating = Λάθος και Application.DisplayAlerts = Λάθος στον κώδικα έτσι ώστε όλα να συμβαίνουν στο backend και να μην βλέπουν πράγματα να συμβαίνουν στην οθόνη σας. Μόλις ο κώδικας τρέξει και χωρίσει τα φύλλα και τα αποθηκεύσει, τα γυρίζουμε πίσω στο TRUE.

Ως βέλτιστη πρακτική, συνιστάται να δημιουργήσετε ένα αντίγραφο ασφαλείας του κύριου αρχείου (το οποίο έχει τα φύλλα που θέλετε να χωρίσετε). Αυτό θα διασφαλίσει ότι δεν θα χάσετε τα δεδομένα σας σε περίπτωση που κάτι πάει στραβά ή εάν το Excel αποφασίσει να καθυστερήσει ή να διακοπεί.

Διαχωρίστε κάθε φύλλο εργασίας και αποθηκεύστε ως ξεχωριστά αρχεία PDF

Σε περίπτωση που θέλετε να χωρίσετε τα φύλλα εργασίας και να τα αποθηκεύσετε ως αρχεία PDF αντί για αρχεία Excel, μπορείτε να χρησιμοποιήσετε τον παρακάτω κώδικα:

'Κώδικας Δημιουργήθηκε από Sumit Bansal από trumpexcel.com Sub SplitEachWorksheet () Dim FPath As String FPath = Application.ActiveWorkbook.Path Application.ScreenUpdating = False Application.DisplayAlerts = False For Every ws In ThisWorkbook.Sheets ws.Copy Application.ActiveSheets Τύπος: = xlTypePDF, Όνομα αρχείου: = FPath & "\" & ws.Name & ".xlsx" Application.ActiveWorkbook.Close False Next Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub

Πράγματα που πρέπει να βεβαιωθείτε πριν χρησιμοποιήσετε αυτόν τον κωδικό:

  1. Δημιουργήστε ένα φάκελο όπου θέλετε να λάβετε όλα τα αρχεία που προκύπτουν.
  2. Αποθηκεύστε το κύριο αρχείο Excel (το οποίο έχει όλα τα φύλλα εργασίας που θέλετε ως ξεχωριστά αρχεία) σε αυτόν το φάκελο.

Ο παραπάνω κώδικας χωρίζει κάθε φύλλο στο αρχείο Excel και το αποθηκεύει ως PDF στον ίδιο φάκελο όπου έχετε αποθηκεύσει το κύριο αρχείο Excel.

Διαχωρίστε μόνο εκείνα τα φύλλα εργασίας που περιέχουν μια λέξη/φράση σε ξεχωριστά αρχεία Excel

Σε περίπτωση που έχετε πολλά φύλλα σε ένα βιβλίο εργασίας και θέλετε να χωρίσετε μόνο εκείνα τα φύλλα που περιέχουν ένα συγκεκριμένο κείμενο, μπορείτε να το κάνετε επίσης.

Για παράδειγμα, ας υποθέσουμε ότι έχετε ένα αρχείο Excel όπου έχετε δεδομένα για πολλά χρόνια και κάθε φύλλο στο αρχείο έχει τον αριθμό έτους ως πρόθεμα. Κάτι όπως φαίνεται παρακάτω:

Τώρα, ας υποθέσουμε ότι θέλετε να χωρίσετε όλα τα φύλλα για το 2021-2022 και να τα αποθηκεύσετε ως ξεχωριστά αρχεία Excel. Για να το κάνετε αυτό, πρέπει να ελέγξετε με κάποιο τρόπο το όνομα κάθε φύλλου εργασίας και μόνο εκείνα τα φύλλα που έχουν τον αριθμό 2021-2022 θα πρέπει να χωριστούν και να αποθηκευτούν και τα υπόλοιπα θα πρέπει να μείνουν ανέγγιχτα.

Αυτό μπορεί να γίνει χρησιμοποιώντας τον ακόλουθο κώδικα μακροεντολής VBA:

«Κώδικας Δημιουργήθηκε από Sumit Bansal από trumpexcel.com Sub SplitEachWorksheet () Dim FPath As String Dim TexttoFind As String TexttoFind =" 2020 "FPath = Application.ActiveWorkbook.Path Application.ScreenUpdating = False Application.DisplayAlerts = False For Every ws In This Sheets If InStr (1, ws.Name, TexttoFind, vbBinaryCompare) 0 Στη συνέχεια ws.Copy Application.ActiveWorkbook.SaveAs Όνομα αρχείου: = FPath & "\" & ws.Name & ".xlsx" Application.ActiveWorkbook.Close False End If Next Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub

Στον παραπάνω κώδικα, έχω χρησιμοποιήσει μια μεταβλητή TexttoFind, η οποία έχει εκχωρηθεί στην αρχή "2020".

Στη συνέχεια, ο κώδικας VBA χρησιμοποιεί το βρόχο For Next στο VBA για να περάσει από κάθε φύλλο εργασίας και στη συνέχεια να ελέγξει το όνομα κάθε συνάρτησης INSTR του φύλλου εργασίας. Αυτή η συνάρτηση ελέγχει εάν το όνομα του φύλλου εργασίας περιέχει τη λέξη2021-2022 ή όχι. Εάν το κάνει, θα επιστρέψει έναν αριθμό θέσης όπου βρίσκει αυτό το κείμενο (το οποίο είναι 2021-2022 σε αυτήν την περίπτωση).

Και αν δεν βρει το κείμενο που ψάχνουμε, επιστρέφει το 0.

Αυτό χρησιμοποιείται με τη συνθήκη IF then. Έτσι, εάν ένα όνομα φύλλου έχει τη συμβολοσειρά κειμένου2021-2022, θα χωριστεί και θα αποθηκευτεί ως ξεχωριστό αρχείο. Και αν δεν έχει αυτήν τη συμβολοσειρά κειμένου, η συνθήκη IF δεν θα πληρούταν και τίποτα δεν θα συνέβαινε.

Θα βοηθήσει στην ανάπτυξη του τόπου, μοιράζονται τη σελίδα με τους φίλους σας

wave wave wave wave wave