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
実行結果からメッセージボックスに表示されたアクティブなシートのシート名が確認できます。
シート番号を指定してシート名を取得する
シート番号を指定してシート名を取得 するには Worksheets.Name を使います。
[書式]
Worksheets(シート番号).Name
次の例では 2 番目のシートのシート名を取得するために sheetName = Worksheets(2).Name と記述しています。
[使用例]
Sub Sample() MsgBox Worksheets(2).Name End Sub
実行結果からメッセージボックスに表示された 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
使用例ではセルにシート名を入れるために繰り返し行う処理を 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
この使用例では開いたファイルを表示しないための設定として 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
日付を扱う方法については、こちらで詳しく解説していますので、ぜひ参考にしてください。
まとめ
いかがでしたか?今回は ExcelVBAでシート名を取得する方法について解説しました。本記事のように全てのシート名の一覧を取得すれば、簡単に目次を作成できます。
もし Excel VBAでシート名を取得する機会があれば、この記事を思い出してみてください!