
マクロで複数のエクセルシートを管理するために、シート名を取得したい…。

なるほど…。
シート名を取得することで、別のシートも操作することができ、
マクロの幅がさらに広がります!
では今回は、「VBA(マクロ)でシート名を取得する方法」を
VBAマクロ歴3年の私が、できるだけわかりやすく解説いたします。
シート名を取得する方法(VBAマクロ)
「Name」を使います。
まずは実行見本をどうぞ。
実行見本
ひとまず全コードと実行結果をご覧ください。
解説は後ほど行います。
全コード
下記VBAコードは、アクティブシート(現在選択されているシート)のシート名を取得した例です。
Sub シート名を取得()
Dim sheetName As String
sheetName = ActiveSheet.Name
MsgBox sheetName
End Sub
実行結果

解説
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
プロシージャの作成
Sub シート名を取得()
End Sub
プロシージャなど、マクロの基礎は下記記事でわかりやすく解説しております。
コードだけではなく、開発タブの表示からマクロの保存まで知りたい方はご参考ください。
変数の宣言
Dim sheetName As String
上記コードにて、以降使用する変数の宣言を行っております。
変数や宣言についての詳しい解説は、下記記事をご参考ください。
シート名を取得
sheetName = ActiveSheet.Name
上記コードにて、シート名を取得して変数「sheetName」に格納しています。
今回はアクティブシート(現在選択されているシート)のシート名を取得しています。
【 変数名 = ActiveSheet.Name 】
「ActiveSheet.Name」は大文字小文字が混在していますので、記述する際はご注意ください。
4行目で、取得したシート名をメッセージボックスで出力しています。

メッセージボックスの出し方は下記記事をご参考ください。
アクティブシートではなく、選択されていないシートのシート名を取得することもできます。
下記VBAコードを見てください。
sheetName = Worksheets(2).Name
(2)は「左から2番目」を示しています。
今回の場合は、「Sheet2」が取得されます。

一番左のシート名を取得したい場合は、(1)を、
一番右のシート名を取得したい場合は、(Sheets.count)と記述してください。
マクロが完成したら、実行して動作を確認してみましょう。

エクセル内に作成した自作のボタンを押してマクロを実行させることも可能です。
ボタンの作り方は、下記記事でわかりやすく解説しております。
すべてのシート名を取得する方法
ブック内すべてのシート名を取得することもできます。
下記のVBAコードを見てください。
Sub すべてのシート名を取得()
Dim ws As Worksheet
Dim sheetList As String
For Each ws In ThisWorkbook.Worksheets
sheetList = sheetList & ws.Name & vbCrLf
Next ws
MsgBox sheetList, vbInformation, "シート名一覧"
End Sub
実行結果が下図です。

【簡単なコード解説】
配列「sheetList」にシート名を追加する処理を、「For Each」で繰り返しています。
最後にメッセージボックスでシート名一覧を表示して完了です。
シート名一覧をメッセージボックスへの表示するのではなく、セルに書き出す方法も紹介いたします。
すべてのシート名をセルに書き出し
Sub すべてのシート名をセルに書き出し()
Dim ws As Worksheet
Dim newSheet As Worksheet
Dim i As Integer
Set newSheet = ThisWorkbook.Sheets.Add
newSheet.Name = "シート名一覧"
i = 1
For Each ws In ThisWorkbook.Worksheets
newSheet.Cells(i, 1).Value = ws.Name
i = i + 1
Next ws
End Sub

【簡単なコード解説】
「シート名一覧」という新しいシートを作成し、各シート名をA1から順番に書き込みしています。
うまく動作しないときの対処法
エラーが発生する
コンパイルエラー・実行時エラー
コードに問題がある場合が多いです。
「”」や()など、2つセットの記号が片方だけになっていないかなど、コードを再確認しましょう。
セル名を「”」で囲っていない場合でもエラーが発生します。
警告表示

上記の表示が出た場合は、マクロが無効になっています。
エクセルに表示された「コンテンツの有効化」をクリックするか、下記記事を参考にセキュリティ設定を変更してください。
最後に
VBA(マクロ)でエクセルのシート名を取得する方法を解説いたしました。
当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!