Stellen Sie sich eine Situation vor, in der Sie täglich mit einer Anzahl von Excel-Dateien konfrontiert sind und Sie einen schnellen Mechanismus benötigen, der Ihnen hilft, die Anzahl der in jeder Arbeitsmappe vorhandenen Arbeitsblätter zu ermitteln. Wenn Sie ein ähnliches Problem haben, dürfen Sie diesen Artikel nicht verpassen, denn er wird Ihnen sehr helfen.
In diesem Artikel erfahren Sie, wie Sie Arbeitsblätter in mehreren Dateien mit VBA-Code zählen.
Frage:Ich brauche ein Makro, das eine Liste von Dateinamen lesen und die Anzahl der Arbeitsblätter zurückgeben kann, die in jeder der Dateien vorhanden sind (dies ist ein Überwachungsmechanismus, um sicherzustellen, dass die richtige Anzahl von Arbeitsblättern in einer Reihe von Dateien vorhanden ist, die über erstellt wurden ein anderer Vorgang). Das Makro müsste den Pfad des Ordners ermitteln, in dem sich die Dateien befinden (alle im selben Ordner), dann die erste Datei suchen, die Arbeitsblattanzahl identifizieren und für die nächste Datei wiederholen usw.
Ich dachte, ich könnte dies mit einer Formel tun, indem ich einfach auf die Dateinamen referenziere, aber ich glaube, Excel hat keine einfache Formel für die Anzahl der Arbeitsblätter. Vielen Dank!
Wenn Sie die ursprüngliche Frage lesen möchten, klicken Sie hier
Es folgt der Schnappschuss von Dateien, die in einem Ordner mit der Erweiterung .xlsx gespeichert sind
Hinweis: Es gibt keine passwortgeschützten Dateien.
Um den Code zu erhalten, müssen wir die folgenden Schritte ausführen, um den VB-Editor zu starten:
- Klicken Sie auf die Registerkarte Entwickler
- Wählen Sie in der Gruppe Code die Option Visual Basic . aus
- Kopieren Sie den folgenden Code in das Standardmodul
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 ' Ordnerpfad, in dem sich die Arbeitsmappen befinden. WkbPath = "C:\Users\Test" ' Name des Arbeitsblatts mit der Arbeitsmappenliste. Set Wks = Worksheets("Sheet1") ' Startzelle der Arbeitsmappenliste. Set Rng = Wks.Range("A2") ' Ruft den Zellbereich in der Namensliste der Arbeitsmappe ab. Set RngEnd = Wks.Cells(Rows.Count, Rng.Column).End(xlUp) If RngEnd.Row >= Rng.Row Then Set Rng = Wks.Range(Rng, RngEnd) ' Erstelle die benötigten ADO-Objekte für dieses Makro . Set Conn = CreateObject("ADODB.Connection") Set Cat = CreateObject("ADOX.Catalog") ' Fügen Sie bei Bedarf einen letzten umgekehrten Schrägstrich zum Pfad hinzu. WkbPath = IIf(Right(WkbPath, 1) "\", WkbPath & "\", WkbPath) ' Durchlaufen Sie jede Zelle in der Arbeitsmappenliste. For Each Cell In Rng ' Rufen Sie die Arbeitsblattanzahl für die Arbeitsmappe ab. ConnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Datenquelle=" _ & WkbPath & Cell _ & ";Erweiterte Eigenschaften=""Excel 12.0 Xml;HDR=YES;IMEX=1;""" Conn.Open ConnStr Set Cat.ActiveConnection = Conn ' Kopieren Sie die Anzahl in die Zelle eine Spalte rechts neben dem Arbeitsmappennamen in der Liste. Cell.Offset(n, 1) = Cat.Tables.Count Conn.Close Next Cell ' Clean up. Set Cat = Nichts Set Conn = Nichts End Sub
- Wenn wir das Makro ausführen, erhalten wir die Anzahl der Arbeitsblätter. Siehe folgenden Schnappschuss:
Hinweis: Das obige Makro funktioniert für die Erweiterung .xlsx & .xls und nicht für die Erweiterung .xlsm Makro aktiviert.
- Alle oben genannten Dateien haben die Erweiterung .xlsx
- Lassen Sie uns ein Dummy-Excel-Blatt hinzufügen, dh Blatt 10
- Falls wir eine Datei mit demselben Namen mit den Erweiterungen .xlsx & .xls haben, müssen wir den Namen der Datei mit ihren jeweiligen Erweiterungen auch in unserer Testdatei (Spalte A) erwähnen, damit das Makro die Datei identifizieren kann, die wir sind unter Bezugnahme auf & gib uns das richtige Ergebnis
- Wenn wir die Erweiterung für die Datei mit dem gleichen Namen nicht erwähnt haben oder vergessen haben, gibt uns das Makro die Anzahl der .xlsx-Erweiterung an. Siehe folgenden Schnappschuss:
- Um die Anzahl der Blätter für Blatt 10 mit den Erweiterungen .xlsx und .xls zu erhalten, müssen wir den Dateinamen mit ihren jeweiligen Erweiterungen angeben
Der Schnappschuss der endgültigen Ausgabe ist unten dargestellt:
Abschluss: Mit dem obigen Makrocode können wir die Anzahl der Arbeitsblätter in mehreren Dateien zählen und wenn wir das benutzerdefinierte Ergebnis benötigen, können wir kleine Änderungen im VBA-Code vornehmen.
Wenn Ihnen unsere Blogs gefallen haben, teilen Sie sie mit Ihren Freunden auf Facebook. Und Sie können uns auch auf Twitter und Facebook folgen.
Wir würden uns freuen, von Ihnen zu hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern, ergänzen oder erneuern und für Sie verbessern können. Schreiben Sie uns auf der E-Mail-Site