【VBA入門】Nameでシート名(アクティブシート)を取得・変更する方法

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でシート名を取得する機会があれば、この記事を思い出してみてください!

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次