スライドショー

【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.NameFor 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

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

イシキ マコト

イシキ マコト

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

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

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説