この記事では、ExcelのVBAマクロを利用して、特定の条件下でシート数を取得する方法について解説していきます。
ポイントとしては、GetOpenFilename関数、Cellsメソッド、Visibleプロパティを使用することです。
なお、下記の解説では完全な初心者でもわかりやすいようにあえて変数名(あなた自身が名付けていい場所)を少々変わった名称にしております。
そのため、あなた自身がご活用の際には、ここを適切な(英語表記でしっくりくるものが一般的)ものに変更してご活用くださいね。
それでは詳しく見ていきましょう!
VBAマクロでシート数を取得しメッセージボックスで表示する方法【開かずに、ダイヤログ使用】【GetOpenFilename】
それではまず、1ファイルのシート数を取得しメッセージボックスで表示する方法について解説していきます。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub SheetKazuHyouji()
Dim filePath As String
Dim hensuu As Workbook
Dim sheetKazu As Integer
filePath = Application.GetOpenFilename("Excelファイル, *.xls; *.xlsx")
If filePath = "False" Then Exit Sub
Set hensuu = Workbooks.Open(filePath, UpdateLinks:=False, ReadOnly:=True)
sheetKazu = hensuu.Sheets.Count
hensuu.Close SaveChanges:=False
MsgBox filePath & " のシート数は " & sheetKazu & " です。"
End Sub
コードのAlt+F8を押し、マクロ選択画面でSheetKazuHyouji関数を実行します。
このコードでは、GetOpenFilename関数でファイルを選択し、選択したファイルのシート数を取得して、メッセージボックスで表示しています。
VBAマクロでフォルダの全てブックのシート数を取得し、ファイル名と共に別ブックに表示する方法【Cells】
続いては、フォルダの全てのブックのシート数を取得し、ファイル名と共に別のブックに表示する方法について解説していきます。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub AllSheetKazuHyouji()
Dim folderPath As String
Dim fileName As String
Dim outputBook As Workbook
Dim hensuu As Workbook
Dim rowKazu As Integer
Dim sheetKazu As Integer
folderPath = ThisWorkbook.Path
Set outputBook = Workbooks.Add
fileName = Dir(folderPath & "\*.xls*")
rowKazu = 1
Do While fileName <> ""
Set hensuu = Workbooks.Open(folderPath & "\" & fileName, UpdateLinks:=False, ReadOnly:=True)
sheetKazu = hensuu.Sheets.Count
hensuu.Close SaveChanges:=False
outputBook.Cells(rowKazu, 1).Value = fileName
outputBook.Cells(rowKazu, 2).Value = sheetKazu
rowKazu = rowKazu + 1
fileName = Dir
Loop
End Sub
コードのAlt+F8を押し、マクロ選択画面でAllSheetKazuHyouji関数を実行します。
このコードでは、指定したフォルダ内のすべてのExcelファイル名と、それぞれのシート数を新しいワークブックに出力します。
VBAマクロで非表示セルシートは含めないでシート数を表示する方法【表示シートのみ】【Visible】
続いては、非表示のセルシートを除外してシート数を表示する方法について解説していきます。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub VisibleSheetKazuHyouji()
Dim hensuu As Worksheet
Dim visibleKazu As Integer
visibleKazu = 0
For Each hensuu In ThisWorkbook.Sheets
If hensuu.Visible = xlSheetVisible Then
visibleKazu = visibleKazu + 1
End If
Next hensuu
MsgBox "表示されているシート数は " & visibleKazu & " です。"
End Sub
コードのAlt+F8を押し、マクロ選択画面でVisibleSheetKazuHyouji関数を実行します。
このコードでは、Visibleプロパティを使用して、非表示のシートを除外し、表示しているシートだけの数を取得し、メッセージボックスで表示しています。
まとめ
以上、VBAマクロを使用してExcelのシート数を特定の条件下で取得する方法について解説しました。
初心者の方でも理解しやすいように変数名を独特なものにしていますので、実際の使用時は適切なものに変えてご使用ください。