Home » エクセルマクロ・Excel VBAの使い方 » Workbooks・Workbook » VBAで他のブックのシート名一覧を取得する

VBAで他のブックのシート名一覧を取得する

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

「vba ほかのブックのシート一覧取得」
といった検索キーワードでアクセスがありました。

[スポンサードリンク]

他のブックのシート名一覧を取得するサンプルマクロ

sample.xlsxという名前のブックが開かれている状態で、以下のExcelマクロを実行すると、このSubプロシージャの書かれているブックのアクティブなワークシートのA列に、sample.xlsxブックのシート名一覧が作成されます。

Sub 他のブックのシート名一覧を作成する()
 Dim bk As Workbook
 Set bk = Workbooks("sample.xlsx")
 
 Dim i As Long
 For i = 1 To bk.Sheets.Count
  ThisWorkbook.ActiveSheet.Cells(i, "A").Value _
    = bk.Sheets(i).Name
 Next
End Sub

サンプルマクロで行っている処理

上記のサンプルマクロでは以下の処理を行っています。

Workbook型のオブジェクト変数bkに、sample.xlsxブックを代入しておいてから、

Dim bk As Workbook
Set bk = Workbooks("sample.xlsx")

sample.xlsxブックのシート数だけFor~Nextループを回して、

Dim i As Long
For i = 1 To bk.Sheets.Count

コードの書かれているブックのアクティブシートのA列に、

 ThisWorkbook.ActiveSheet.Cells(i, "A").Value _

sample.xlsxブックのシート名を出力しています。

   = bk.Sheets(i).Name

他ブックのシート名一覧を取得する際のエラーを回避するには

上記のサンプルマクロを実行したときに、sample.xlsxが開かれていなければ実行時エラーが発生します。

それを回避するのであれば、以下のようなエラー処理を入れましょう。

Sub 他のブックのシート名一覧を作成する__エラー処理入り()
On Error GoTo ErrHandl
 
 Dim bk As Workbook
 Set bk = Workbooks("sample.xlsx")
 
 Dim i As Long
 For i = 1 To bk.Sheets.Count
  ThisWorkbook.ActiveSheet.Cells(i, "A").Value _
    = bk.Sheets(i).Name
 Next

Exit Sub
ErrHandl:
 Select Case Err.Number
  Case 9
   MsgBox "指定されたブックが開かれていないようです。"
  Case Else
   MsgBox Err.Description & vbCrLf & Err.Number
 End Select
 Err.Clear
End Sub

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Workbooks・Workbook » VBAで他のブックのシート名一覧を取得する

「Workbooks・Workbook」の記事一覧

検索


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

.