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

LINEで送る
Pocket

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

イシキ マコト

イシキ マコト

フリーランスのエンジニアです。
最近では、プログラミング関連の記事を作成するライターとしても活動しています。

趣味と業務の両方でプログラミング言語をいくつも学んできたので
その経験を活かして分かりやすい記事を作成できればと考えています。