毎日多数のExcelファイルに遭遇していて、各ワークブックに存在するワークシートの数を見つけるのに役立つ迅速なメカニズムが必要な状況を考えてみてください。同様の問題がある場合は、この記事を見逃してはなりません。これは非常に役立ちます。

この記事では、VBAコードを使用して複数のファイルのワークシートをカウントする方法を学習します。

質問:*ファイル名のリストを読み取り、各ファイルに存在するワークシートの数を返すことができるマクロが必要です(これは、一連のファイルに正しい数のワークシートが存在することを確認するための監査メカニズムです。別のプロセスで作成されたファイル)。マクロは、ファイルが配置されているフォルダーのパス(すべて同じフォルダー内)を確立してから、最初のファイルを見つけ、ワークシートの数を特定し、次のファイルなどについて繰り返す必要があります。

ファイル名を参照するだけで数式を使用してこれを実行できると思いましたが、Excelにはワークシート数の簡単な数式がないと思います。ありがとう!

元の質問を読みたい場合は、http://www.excelforum.com/excel-programming-vba-macros/1091683-count-worksheets-in-multiple-files.html [ここ]をクリックしてください

以下は、拡張子が.xlsxのフォルダーに保存されたファイルのスナップショットです

img1

注:パスワードで保護されたファイルはありません。

コードを取得するには、以下の手順に従ってVBエディターを起動する必要があります。

[開発者]タブをクリックします。[コード]グループから、[VisualBasic]を選択します

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

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

===

img4

  • マクロを実行すると、ワークシートの数が取得されます。以下のスナップショットを参照してください:

img5

注:上記のマクロは、.xlsxおよび.xls拡張子では機能し、.xlsmマクロ対応拡張子では機能しません。

上記のファイルはすべて.xlsx拡張子ですダミーのExcelシート、つまりシート10を追加しましょう。同じ名前のファイルに.xlsxと.xlsの拡張子が付いている場合は、ファイルの名前とそれぞれの拡張子を次のように指定する必要があります。テストファイル(列A)で、マクロが参照しているファイルを識別し、正しい結果を提供できるようにします。同じ名前のファイルの拡張子について言及していないか、言及しなかった場合、マクロは次のようになります。 .xlsx拡張子の数。以下のスナップショットを参照してください:

img6

  • 拡張子が.xlsxおよび.xlsのシート10のシート数を取得するには、ファイル名とそれぞれの拡張子を記載する必要があります。最終出力のスナップショットを以下に示します。

img7

結論:上記のマクロコードを使用すると、複数のファイル内のワークシートの数を数えることができます。カスタム結果を取得する必要がある場合は、VBAコードを少し変更することができます。

rar icon

私たちのブログが気に入ったら、Facebookで友達と共有してください。また、TwitterやFacebookでフォローすることもできます。

_私たちはあなたからの連絡をお待ちしております。私たちの仕事を改善、補完、または革新し、あなたのためにそれをより良くする方法を教えてください。 [email protected]_までご連絡ください