「vba ワークシートからブック名を取得」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがあることに気づきました。
ワークシートが特定できているときに、そのワークシートの含まれるブックの名前を取得する、Excel VBA(Visual Basic for Applications)のコードを探している方による検索です。
ワークシートからブック名を取得するサンプルマクロ
以下のSubプロシージャを実行すると、開かれているブックのいずれかに、定数・FIND_SHで指定されている名前のワークシートが存在しているときに、そのワークシートが含まれているブックの名前がメッセージボックスに表示されます。
Const FIND_SH = "顧客マスター"
Dim bk As Workbook
Dim sh As Worksheet For Each bk in Workbooks
For Each sh in bk.Worksheets
If sh.Name = FIND_SH Then
MsgBox sh.Parent.Name
Exit Sub
End If
Next sh
Next bk
MsgBox "「" & FIND_SH & "」シートは存在しません。"
End Sub
サンプルマクロの解説
開いている全ブックにFor Each~Nextループを回して、
For Each bk in Workbooks
各ブック内の全ワークシートにFor Each~Nextループを回して、
For Each sh in bk.Worksheets
シートの名前を調べて、探しているシート名だったときに、
If sh.Name = FIND_SH Then
Parentプロパティで、親オブジェクトであるWorkbookオブジェクトを取得して、その名前をメッセージボックスに表示して、Subプロシージャを抜け、
MsgBox sh.Parent.Name
Exit Sub
シートが見つからなかった場合には、メッセージを表示します。
MsgBox "「" & FIND_SH & "」シートは存在しません。"
Parentプロパティを使わない場合
ちなみに、上記の条件であれば、Parentプロパティを使わなくても、以下のようなコードで同じ結果を得られます。
For Each bk in Workbooks
For Each sh in bk.Worksheets
If sh.Name = FIND_SH Then
MsgBox bk.Name
Exit Sub
End If
Next sh
Next bk
- Newer:選択箇所のParagraphsコレクションを取得する
- Older:TextStreamでファイル出力するExcelマクロ-FileSystemObject.CreateTextFile・Folder.CreateTextFile
Home » エクセルマクロ・Excel VBAの使い方 » Workbooks・Workbook » ワークシートからブック名を取得するExcelマクロ