目的
- ワークシートの名前を取得したい。
- グラフ Graph シートの名前も取得したい。
- ループで取得したい。
マクロの一例
- ワークシートが 3 枚ある状態でテストしてみます。

Sub ワークシートの名前を取得するマクロ()
Debug.Print Worksheets(1).Name
Debug.Print Worksheets(2).Name
Debug.Print Worksheets(3).Name
End Sub

グラフシートがある場合
- グラフシートがある状態でテストしてます。

Sub sheets使用_ワークシートの名前を取得するマクロ()
Debug.Print Sheets(1).Name
Debug.Print Sheets(2).Name
Debug.Print Sheets(3).Name
Debug.Print Sheets(4).Name
End Sub
- Sheets で操作対象取得。

Worksheets でグラフシートの名前を取得しようとした場合、エラーが発生するようです。
- エラーが発生するマクロを実行してみます。
Sub エラー発生_ワークシートの名前を取得するマクロ()
Debug.Print Worksheets(1).Name
Debug.Print Worksheets(2).Name
Debug.Print Worksheets(3).Name
Debug.Print Worksheets(4).Name 'エラー
End Sub - エラー発生。

インデックスが有効範囲にありません。

ループで取得
Sheet1 ~ 3 をループで取得してみます。

Sub ループでワークシート名取得()
Dim a
For a = 1 To Worksheets.Count
Debug.Print Worksheets(a).Name
Next
End Sub

下記マクロでも同じ結果になりました。
Sub ForEach_ループでワークシート名取得()
Dim a
For Each a In Worksheets
Debug.Print a.Name
Next
End Sub
テスト環境
- Windows 10(64 ビット)
- Microsoft Office Excel 2003
以上、閲覧ありがとうございました。
