Εξετάστε μια κατάσταση, όπου αντιμετωπίζετε καθημερινά αριθμό αρχείων excel και θέλετε έναν γρήγορο μηχανισμό που θα σας βοηθήσει να βρείτε τον αριθμό των φύλλων εργασίας που υπάρχουν σε κάθε βιβλίο εργασίας. Αν έχετε παρόμοιο πρόβλημα, τότε δεν πρέπει να χάσετε αυτό το άρθρο γιατί θα σας βοηθήσει πολύ.
Σε αυτό το άρθρο, θα μάθουμε πώς να μετράμε φύλλα εργασίας σε πολλά αρχεία με κώδικα VBA.
Ερώτηση:Πρέπει να κάνω μακροεντολή που μπορεί να διαβάσει μια λίστα με ονόματα αρχείων και να επιστρέψει τον αριθμό των φύλλων εργασίας που υπάρχουν σε καθένα από τα αρχεία (αυτός είναι ένας μηχανισμός ελέγχου για να διασφαλιστεί ότι υπάρχει ο σωστός αριθμός φύλλων εργασίας σε μια σειρά αρχείων που δημιουργήθηκαν μέσω άλλη διαδικασία). Η μακροεντολή θα πρέπει να καθορίσει τη διαδρομή του φακέλου όπου βρίσκονται τα αρχεία (όλα στον ίδιο φάκελο), στη συνέχεια να εντοπίσει το πρώτο αρχείο, να προσδιορίσει τον αριθμό φύλλου εργασίας και να επαναλάβει για το επόμενο αρχείο κ.λπ.
Νόμιζα ότι θα μπορούσα να το κάνω με έναν τύπο απλώς αναφέροντας τα ονόματα αρχείων, αλλά πιστεύω ότι το Excel δεν έχει έναν απλό τύπο για τον υπολογισμό των φύλλων εργασίας. Ευχαριστώ!
Αν θέλετε να διαβάσετε την αρχική ερώτηση, κάντε κλικ εδώ
Ακολουθεί το στιγμιότυπο των αρχείων που είναι αποθηκευμένα σε ένα φάκελο με επέκταση .xlsx
Σημείωση: Δεν υπάρχουν αρχεία που προστατεύονται με κωδικό πρόσβασης.
Για να λάβετε τον κωδικό, πρέπει να ακολουθήσετε τα παρακάτω βήματα για να ξεκινήσετε τον επεξεργαστή VB:
- Κάντε κλικ στην καρτέλα Προγραμματιστής
- Από την ομάδα κωδικών, επιλέξτε Visual Basic
- Αντιγράψτε τον παρακάτω κώδικα στην τυπική μονάδα
Sub ListSheetCounts () Dim Cell As Range Dim Conn As Object Dim Cat As Object Dim ConnStr As String Dim n As Long Dim Rng As Range Dim RngEnd As Range Dim WkbPath As Variant Dim Wks As Worksheet 'Folder path (Φάκελος εργασίας) όπου βρίσκονται τα βιβλία εργασίας. WkbPath = "C: \ Users \ Test" 'Όνομα φύλλου εργασίας με τη λίστα βιβλίων εργασίας. Ορισμός Wks = Φύλλα εργασίας ("Sheet1") 'Έναρξη κελιού της λίστας βιβλίων εργασίας. Ρύθμιση Rng = Wks.Range ("A2") 'Λάβετε το εύρος των κελιών στη λίστα με τα ονόματα του βιβλίου εργασίας. Ορισμός RngEnd = Wks.Cells (Rows.Count, Rng.Column). End (xlUp) If RngEnd.Row> = Rng.Row Στη συνέχεια Set Rng = Wks.Range (Rng, RngEnd) 'Δημιουργήστε τα απαραίτητα αντικείμενα ADO από αυτήν τη μακροεντολή Το Ορισμός Conn = CreateObject ("ADODB.Connection") Set Cat = CreateObject ("ADOX.Catalog") 'Προσθέστε μια τελική αντίστροφη πλάκα της διαδρομής, εάν χρειάζεται. WkbPath = IIf (Δεξιά (WkbPath, 1) "\", WkbPath & "\", WkbPath) 'Βήμα σε κάθε κελί στη λίστα βιβλίων εργασίας. Για κάθε κελί σε Rng 'Λάβετε τον αριθμό φύλλου εργασίας για το βιβλίο εργασίας. ConnStr = "Provider = Microsoft.ACE.OLEDB.12.0; Πηγή δεδομένων =" _ & WkbPath & Cell _ & "; Extended Properties =" "Excel 12.0 Xml; HDR = YES; IMEX = 1;" "" Conn.Open ConnStr Set Cat.ActiveConnection = Conn 'Αντιγράψτε τον αριθμό στο κελί μία στήλη δεξιά από το όνομα του βιβλίου εργασίας στη λίστα. Cell.Offset (n, 1) = Cat.Tables.Count Conn.Close Next Cell 'Clean up. Set Cat = Nothing Set Conn = Nothing End Sub
- Καθώς τρέχουμε τη μακροεντολή, θα λάβουμε τον αριθμό των φύλλων εργασίας. Ανατρέξτε στο παρακάτω στιγμιότυπο:
Σημείωση: η παραπάνω μακροεντολή θα λειτουργήσει για επέκταση .xlsx & .xls και όχι για επέκταση με δυνατότητα .xlsm Μακροεντολή.
- Όλα τα παραπάνω αρχεία είναι επέκταση .xlsx
- Ας προσθέσουμε ένα ομοίωμα φύλλο excel, δηλαδή το Φύλλο 10
- Σε περίπτωση που έχουμε ένα αρχείο με το ίδιο όνομα που έχει επεκτάσεις .xlsx & .xls, τότε πρέπει να αναφέρουμε το όνομα του αρχείου με τις αντίστοιχες επεκτάσεις τους στο δοκιμαστικό μας αρχείο (στήλη Α), έτσι ώστε η μακροεντολή να μπορεί να αναγνωρίσει το αρχείο που είμαστε αναφερόμαστε & δώστε μας το σωστό αποτέλεσμα
- Εάν δεν έχουμε αναφέρει ή έχουμε παραλείψει να αναφέρουμε την επέκταση για το αρχείο με το ίδιο όνομα, τότε η μακροεντολή θα μας δώσει τον αριθμό της επέκτασης .xlsx. Ανατρέξτε στο παρακάτω στιγμιότυπο:
- Για να λάβετε τον αριθμό των φύλλων για το Φύλλο 10 με επεκτάσεις .xlsx & .xls, πρέπει να αναφέρουμε το όνομα του αρχείου με τις αντίστοιχες επεκτάσεις τους
Το στιγμιότυπο της τελικής εξόδου απεικονίζεται παρακάτω:
Συμπέρασμα: Χρησιμοποιώντας τον παραπάνω κώδικα μακροεντολής, μπορούμε να μετρήσουμε αριθμό φύλλων εργασίας σε πολλά αρχεία και εάν χρειαστεί να λάβουμε το προσαρμοσμένο αποτέλεσμα, μπορούμε να κάνουμε λίγη τροποποίηση στον κώδικα VBA.
Αν σας άρεσαν τα ιστολόγια μας, μοιραστείτε το με τους φίλους σας στο Facebook. Επίσης, μπορείτε να μας ακολουθήσετε στο Twitter και το Facebook.
Θα θέλαμε πολύ να σας ακούσουμε, ενημερώστε μας πώς μπορούμε να βελτιώσουμε, να συμπληρώσουμε ή να καινοτομήσουμε το έργο μας και να το κάνουμε καλύτερο για εσάς. Γράψτε μας στον ιστότοπο email