考虑一种情况,您每天会遇到许多excel文件,并且您需要一种快速的机制来帮助您查找每个工作簿中存在的工作表的数量。如果您遇到类似的问题,则不要错过这篇文章,因为它会对您有所帮助。

|在本文中,我们将学习如何使用VBA代码对多个文件中的工作表进行计数。

问题:*我需要一个宏,它可以读取文件名列表并返回每个文件中存在的工作表数量(这是一种审核机制,可确保一系列的工作表中存在正确的工作表数量通过其他过程创建的文件)。宏将需要建立文件所在文件夹的路径(都在同一文件夹中),然后找到第一个文件,标识工作表计数,并为下一个文件重复等。我以为我可以通过简单地引用文件名来使用公式来执行此操作,但是我认为Excel没有针对工作表计数的简单公式。谢谢!

如果您想阅读原始问题,请单击http://www.excelforum.com/excel-programming-vba-macros/1091683-count-worksheets-in-multiple-files.html [此处]

以下是保存在扩展名为.xlsx

的文件夹中的文件的快照。注意:没有密码保护的文件。

img1

要获取代码,我们需要按照以下步骤启动VB编辑器:

单击“开发人员”选项卡。从“代码”组中,选择“ Visual Basic”

  • 将以下代码复制到标准模块中

img2

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

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

===

  • 在运行宏时,我们将获得工作表的数量。请参考下面的快照:

img4

注意:上述宏适用于.xlsx和.xls扩展名,而不适用于启用了.xlsm宏的扩展名。

img5

上面所有的文件都是.xlsx扩展名让我们添加虚拟excel工作表即Sheet 10如果我们有一个具有.xlsx和.xls扩展名的文件,那么我们需要提及文件名及其相应的扩展名,例如很好地放在我们的测试文件中(A列),以便宏可以识别我们正在引用的文件并为我们提供正确的结果。我们.xlsx扩展名的数量。请参考下面的快照:

  • 要获取带有.xlsx和.xls扩展名的Sheet 10的工作表数,我们需要提及文件名及其相应的扩展名。最终输出的快照如下所示:

img6

结论:使用上面的宏代码,我们可以计算多个文件中工作表的数量;如果需要获得自定义结果,我们可以在VBA代码中轻松完成一些修改。

img7

如果您喜欢我们的博客,请在Facebook上与您的朋友分享。您也可以在Twitter和Facebook上关注我们。

rar icon

我们很高兴收到您的来信,请让我们知道如何改进,补充或创新我们的工作,并为您做得更好。写信给我们[email protected]