ExcelVBAではNameプロパティを使ってシート名を取得、変更できます。この記事では Excel のシート名の取得について
- Name プロパティとは?
- アクティブなシートのシート名を取得する方法
- シート番号を指定してシート名を取得する方法
- 全てのシート名の一覧を取得する方法
- 別ファイルのシート名を取得する方法
- シート名を変更する
など基本的な内容から、応用的な使い方についても解説していきます。
Nameプロパティとは?
Nameプロパティはシート名を取得、変更するために使用します。Exce VBA では、オブジェクトの持つ情報をプロパティと呼びます。Nameプロパティも、その 1 つでオブジェクトの名前を表します。
[書式]
オブジェクト.Name
それでは、例を交えながら詳しく解説していきます。
アクティブなシートのシート名を取得する
アクティブなシートのシート名を取得するには ActiveSheet.Name を使います。
[書式]
ActiveSheet.Name
次の例では、アクティブなシートのシート名を取得するために sheetName = ActiveSheet.Name と記述しています。
[使用例]
Sub Sample()
MsgBox ActiveSheet.Name
End Sub
![image11 0]()
画像:実行結果
実行結果からメッセージボックスに表示されたアクティブなシートのシート名が確認できます。
シート番号を指定してシート名を取得する
シート番号を指定してシート名を取得 するには Worksheets.Name を使います。
[書式]
Worksheets(シート番号).Name
次の例では 2 番目のシートのシート名を取得するために sheetName = Worksheets(2).Name と記述しています。
[使用例]
Sub Sample()
MsgBox Worksheets(2).Name
End Sub
![image21 0]()
画像:実行結果
実行結果からメッセージボックスに表示された 2 番目のシートのシート名が確認できます。
全てのシート名の一覧を取得する
全てのシート名の一覧を取得するには Worksheets.Name と For Next 文を併用します。シート名の一覧表を作成する方法を次の使用例で確認してみましょう。
[使用例]
Sub Sample()
Dim i As Integer
For i = 1 To Worksheets.Count
Range("A" & i) = Worksheets(i).Name
Next i
End Sub
![image31 0]()
画像:実行前
![image32 0]()
画像:実行後
使用例ではセルにシート名を入れるために繰り返し行う処理を Range("A" & i) = Worksheets(i).Name としています。実行結果から Excel の 1 列目に作成されたシート名の一覧が確認できます。
別のファイルのシート名を取得する
ここでは別のファイルのシート名を取得する方法について解説します。別ファイルの内容を参照するには、次の書式のように Workbooks.Open でファイルを開いた後にファイルに対する操作を行います。また、開いたファイルは Workbooks.Close で閉じる必要があります。
[書式]
Set wb = Workbooks.Open("ファイルのパス")
ファイルに対する操作
wb.Close (False)
別ファイルのシート名を取得する方法を次の使用例で確認してみましょう。
[使用例]
Sub Sample()
Set wb = Workbooks.Open(ActiveWorkbook.Path & "" & "other.xlsx")
ActiveWindow.Visible = False
MsgBox wb.Worksheets(1).Name
wb.Close (False)
End Sub
![image41 0]()
画像:実行結果
この使用例では開いたファイルを表示しないための設定として ActiveWindow.Visible = False としています。別ファイルの 1 番目のシートのシート名を取得するために sheetName = wb.Worksheets(1).Name としています。
ファイルの変更を保存しないようにするため Workbooks.Close (False) では、引数に False を指定しています。実行結果からメッセージボックスに別ファイルの 1 番目のシートのシート名 である「シート1」が表示されることが確認できます。
この使用例では ActiveWorkbook.Path で同じディレクトリを指定しています。そのため、そこに開きたいファイルのother.xlsxがなければエラーが発生するので注意してください。
シート名を変更する
Nameプロパティはシート名を変更する場合にも使われます。シート名を変更する方法についてもご紹介します。シート名に日付を使って識別できるようにしてみましょう。
[使用例]
Sub Sample()
Dim d As Date
d = #2/1/2018# ' #月/日/年#
Worksheets(1).Name = Format(d, "Long Date")
End Sub
![Name01]()
画像:実行結果
日付を扱う方法については、こちらで詳しく解説していますので、ぜひ参考にしてください。
まとめ
いかがでしたか?今回は ExcelVBAでシート名を取得する方法について解説しました。本記事のように全てのシート名の一覧を取得すれば、簡単に目次を作成できます。
もし Excel VBAでシート名を取得する機会があれば、この記事を思い出してみてください!