Excelのシート数をカウントする方法!関数の他VBAで他ブック取得も!

Excelのシート数をカウントしたいときはないでしょうか。

けど、そんな中で悩むことは、

・Excelのシート数をカウントしたいが方法がよくわからない
・複数の別ブックのシート数をカウントしたいが方法がよくわからない

ですよね。

今回はそんなお悩みを解決する

・Excelのシート数をカウントする方法
・VBAで複数の別ブックのシート数をカウントする方法

についてまとめます!

Excelのシート数をカウントするイメージ

Excelのシート数をカウントするイメージについて説明をします。

まず、Excelのワークシート関数でシート数を取得します。

次にVBAで複数の別ブックのシート数を一括でカウントしていきます。

複数のブックを処理したいときに便利ですね。

早速実装して試してみましょう。

シートを用意する

Excelブックのシートをいくつか作成しましょう。

サンプルでは5つのシートと別ブックで2つと3つのシートをそれぞれ用意しました。

ワークシート関数でシート数をカウントする

ワークシート関数でシート数をカウントする方法について説明をします。
シート数を取得する関数はSHEETS関数となります。

SHEETS関数の書式/機能/引数

関数名 SHEETS
機能 参照内のシート数を返します。
書式 =SHEETS([範囲])
引数 範囲 :情報が必要なシート及びセルを指定します。
省略すると、現ブックのシート情報が返されます。

SHEETS関数は参照範囲のシート数を返す関数で、パラメータを省略するとブック全体のシート数、シート範囲を指定するとその範囲に絞り込んだシート数を取得することができます。

関数を実装してシート数を取得する

関数を実装してシート数を取得してみましょう。

以下の数式をA1セルへ入力します。

=SHEETS()

はい、シート数が取得されましたね。

続いてシートの範囲を指定してみましょう。

=SHEETS(Sheet1:Sheet3!B1)

Sheet1~Sheet3のシート数を取得します。「~」の部分は「:」とし、開始シートを前に、後ろに終了シートを指定します。

なお、範囲はシート名以外にセルを指定する必要があるので、適当なセルを入力します。

はい、指定範囲のシート数が取得できましたね。

VBAでで別ブックのシート数をカウントする

次はVBAで複数の別ブックのシート数をカウントする方法について説明をします。

対象のブックは以下の2つです。

これらのシート数をVBA実行元のブックの1番目のシートへ出力していきます。

 

VBAコード

VBAは以下の通りです。

Sub 複数のブックのシート数を取得する()

    Dim objWb As Workbook
    Dim i As Integer
    Dim arrBookPass(1) As String
    Dim strBookPass As Variant
    Dim objExpSheet As Object

    'ブックのパスを指定します。対象ブックを増やす場合は配列を増やしてください。
    arrBookPass(0) = "F:\test\別ブック1.xlsx"
    arrBookPass(1) = "F:\test\別ブック2.xlsx"
    
    'カウント数出力先のシートを指定します。
    Set objExpSheet = ThisWorkbook.Sheets(1)
    
    '出力開始行数を指定します。
    i = 2

    '配列の件数分処理を繰り返します。
    For Each strBookPass In arrBookPass
        'ブックファイルのパスを指定します。
        Set objWb = Workbooks.Open(strBookPass)
        
        With objExpSheet
            'ブックオブジェクトからブック名を取得、セルへ代入します。
            .Cells(i, 1) = objWb.Name
            'Sheetsコレクションからシート数を取得しシート数をセルへ代入します。
            .Cells(i, 2) = objWb.Sheets.Count
        End With
        i = i + 1
        
        'ブックを閉じます。
        objWb.Close
    Next
    
    'オブジェクトを解放します。
    Set objWb = Nothing

End Sub

VBAを設定する

VBAの設定をしていきましょう。

ブックのパスを指定します。環境に応じて変更をしてください。
また対象ブックを増やす場合は配列を増やしてください。

arrBookPass(0) = "F:\test\別ブック1.xlsx"
arrBookPass(1) = "F:\test\別ブック2.xlsx"

カウント数出力先のシートを指定します。
サンプルではVBA実装ブックの1番目のシートになります。

Set objExpSheet = ThisWorkbook.Sheets(1)

出力開始行数を指定します。
サンプルは2行目の指定になります。

i = 2

VBAの実装

VBAの実装方法については
VBAの実装手順
をご参照ください。

VBAを実行

VBAを実行しましょう。

はい、各ブックのシート数が出力されましたね。

VBAの説明

VBAについて説明をします。

配列の件数分処理を繰り返します。

For Each strBookPass In arrBookPass

ブックファイルのパスを指定します。

Set objWb = Workbooks.Open(strBookPass)

ブックオブジェクトからブック名を取得、セルへ代入します。

.Cells(i, 1) = objWb.Name

Sheetsコレクションからシート数を取得しシート数をセルへ代入します。

.Cells(i, 2) = objWb.Sheets.Count

ブックを閉じます。

objWb.Close

オブジェクトを解放します。

Set objWb = Nothing

VBAの実装手順

実装手順は以下の通りです。

Excel側にVBAを実装していきます。

①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。

②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。

③右ペインのウインドウに上記のVBAを入力します。

こちらで完了です。

VBAを実行する

では早速VBAの実行をしてみましょう。

①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。

②処理がされたことが確認できれば完了です。

さいごに

いかがでしょうか。

今回は、

・Excelのシート数をカウントする方法
・VBAで複数の別ブックのシート数をカウントする方法

についてまとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。



タカヒロ

タカヒロ
実質無料で読めるExcelVBA本についてまとめました。
もしVBA本購入を検討されていたら、どれだけお得か確かめてみてください。

【¥0】実質無料のExcelVBAおすすめ本25選!初級~中級まで網羅!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です