Home » Access VBA » Access VBAでExcelのシート数を取得する

Access VBAでExcelのシート数を取得する

動作検証バージョン:Windows 11 Home + 64bit Access & Excel バージョン 2405(ビルド17602.20000クイック実行)ベータチャネル

「VBA Access Excel ワークシートの数」
といった検索キーワードで、このサイト『インストラクターのネタ帳』へのアクセスが時折あります。

この記事では、Excelのワークシートの枚数や、グラフシートも含むシートの枚数を取得するコードをご紹介します。

[スポンサードリンク]

ワークシートの枚数を取得するSubプロシージャ

Excelブックを1つ開いた状態で以下のSubプロシージャを実行すると、そのブックのワークシートの枚数がメッセージボックスに表示されます。

Sub Excelブックのワークシート数を取得する()
On Error GoTo ErrHandl
  
 With GetObject(Class:="Excel.Application")
  MsgBox .Worksheets.Count
 End With

Exit Sub
ErrHandl:
 Select Case Err.Number
  Case 429
   MsgBox "Excelが起動していないようです。"
  Case 91
   MsgBox "Excelファイルが開かれていないようです。"
  Case Else
   MsgBox Err.Description & vbCrLf & Err.Number
 End Select
 Err.Clear
End Sub

Access VBAからExcelを操作するには、まず、Excel.Applicationオブジェクトへの参照を取得する必要があります。

上記のSubプロシージャでは、VBAのGetObject関数の引数Classに文字列「Excel.Application」を指定することで、起動しているExcelへの参照を取得しています。

With GetObject(Class:="Excel.Application")

Excel.Applicationへの参照を取得した後は、実質的にExcel VBAのコードです。

Excel.Applicationに用意されているWorksheetsプロパティを使うと、

With GetObject(Class:="Excel.Application")
 MsgBox .Worksheets.Count

ワークシートを表すWorksheetオブジェクトのみを要素オブジェクトとして含むExcel.Sheetsコレクションを取得できます。

Worksheetのみを要素オブジェクトとして含むSheetsコレクションのCountプロパティでワークシートの枚数を取得できます。

With GetObject(Class:="Excel.Application")
 MsgBox .Worksheets.Count

シートの枚数を取得する場合

ワークシートの枚数ではなく、グラフシートも含むシートの枚数を取得したい場合、

With GetObject(Class:="Excel.Application")
 MsgBox .Worksheets.Count

の部分を、

With GetObject(Class:="Excel.Application")
 MsgBox .Sheets.Count

としてください。

Excelの、Application.Sheetsプロパティを使うと、Worksheetオブジェクトだけでなく、グラフシートを表すChartオブジェクトも要素として含むSheetsコレクションが取得できます。

そのSheets.Countプロパティですべてのシートの枚数を取得できます。

Application.Worksheetsの戻り値はSheets

Excelの、Application.Worksheetsの戻り値が、Excel.Worksheetsコレクションだと思っていた方には、以下のような記事を参考に確認しておくことをおすすめします。

[スポンサードリンク]

Home » Access VBA » Access VBAでExcelのシート数を取得する

「Access VBA」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.