Betrachten Sie eine Situation, in der Sie täglich auf die Anzahl der Excel-Dateien stoßen und einen schnellen Mechanismus benötigen, mit dem Sie die Anzahl der in jeder Arbeitsmappe vorhandenen Arbeitsblätter ermitteln können. 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 muss ein Makro erstellen, 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 Prüfmechanismus, um sicherzustellen, dass die richtige Anzahl von Arbeitsblättern in einer Reihe von vorhanden ist Dateien, die über einen anderen Prozess erstellt wurden). Das Makro muss den Pfad des Ordners festlegen, in dem sich die Dateien befinden (alle im selben Ordner), dann die erste Datei suchen, die Anzahl der Arbeitsblätter ermitteln und für die nächste Datei usw. wiederholen.

Ich dachte, ich könnte dies mit einer Formel tun, indem ich einfach auf die Dateinamen verweise, 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 auf here

Im Folgenden finden Sie eine Momentaufnahme der Dateien, die in einem Ordner mit der Erweiterung .xlsx

img1

gespeichert sind Hinweis: Es gibt keine kennwortgeschützten Dateien.

Um den Code zu erhalten, müssen Sie 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

img2

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



' Folder path where the workbooks are located.

WkbPath = "C:\Users\Test"



' Name of worksheet with the workbook list.

Set Wks = Worksheets("Sheet1")



' Starting cell of workbook list.

Set Rng = Wks.Range("A2")



' Get the range of cells in the workbook name list.

Set RngEnd = Wks.Cells(Rows.Count, Rng.Column).End(xlUp)

If RngEnd.Row >= Rng.Row Then Set Rng = Wks.Range(Rng, RngEnd)



' Create the needed ADO objects fro this macro.

Set Conn = CreateObject("ADODB.Connection")

Set Cat = CreateObject("ADOX.Catalog")



' Add a final backslash the path if needed.

WkbPath = IIf(Right(WkbPath, 1) <> "\", WkbPath & "\", WkbPath)



' Step through each cell in the workbook list.

For Each Cell In Rng



' Get the worksheet count for the workbook.

ConnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _

& WkbPath & Cell _

& ";Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1;"""

Conn.Open ConnStr



Set Cat.ActiveConnection = Conn



' Copy the count to the cell one column to right of the workbook name in the list.

Cell.Offset(n, 1) = Cat.Tables.Count



Conn.Close



Next Cell



' Clean up.

Set Cat = Nothing

Set Conn = Nothing

End Sub

image: https: //www.office-skill.site/images/wp-content-uploads-2015-07-img37.png [img3, width = 796, height = 490]

===

img4

  • Während wir das Makro ausführen, erhalten wir die Anzahl der Arbeitsblätter. Siehe folgenden Schnappschuss:

img5

Hinweis: Das obige Makro funktioniert für die Erweiterung .xlsx & .xls und nicht für die Erweiterung .xlsm Macro.

Alle oben genannten Dateien haben die Erweiterung .xlsx. Fügen wir ein Dummy-Excel-Blatt hinzu, z. B. Blatt 10. Wenn wir eine Datei mit demselben Namen mit den Erweiterungen .xlsx und .xls haben, müssen wir den Namen der Datei mit den jeweiligen Erweiterungen als angeben gut in unserer Testdatei (Spalte A), damit das Makro die Datei identifizieren kann, auf die wir uns beziehen, und uns das richtige Ergebnis liefert. Wenn wir die Erweiterung für die Datei mit demselben Namen nicht erwähnt oder verpasst haben, gibt das Makro uns die Anzahl der .xlsx-Erweiterung. Siehe folgenden Schnappschuss:

img6

  • Um die Anzahl der Blätter für Blatt 10 mit den Erweiterungen .xlsx und .xls zu erhalten, müssen wir den Dateinamen mit den jeweiligen Erweiterungen angeben. Der Schnappschuss der endgültigen Ausgabe ist unten dargestellt:

img7

Fazit: Mit dem obigen Makrocode können wir die Anzahl der Arbeitsblätter in mehreren Dateien zählen und bei Bedarf das benutzerdefinierte Ergebnis erhalten, können wir einige Änderungen im VBA-Code vornehmen.

rar icon

Wenn Ihnen unsere Blogs gefallen haben, teilen Sie sie Ihren Freunden auf Facebook mit. Sie können uns auch auf Twitter und Facebook folgen.

Wir würden gerne von Ihnen hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern, ergänzen oder innovieren und für Sie verbessern können. Schreiben Sie uns an [email protected]