【Excel VBA】シート名の取得と変更(Name)

はじめに

今回は、シート名の取得 及び シート名の変更の方法について解説します。
シート名の変更における注意点や、シート名の取得についてはブック内のすべてのシートの名前を取得する方法など、コピペで使える実践的なサンプルコードを用いて解説しています。
ぜひ最後までお付き合いください!

この記事を読むメリット
  • シート名を取得する方法が分かります。
  • シート名を変更する方法が分かります。
  • シート名の変更におけるエラーの対処法について解説しています。
  • コピペで使える実践的なサンプルコードを掲載しています。

基本情報

Nameプロパティ

シート名の取得 及び 変更を実施する場合は、WorksheetオブジェクトのNameプロパティを使用します。

構文

‘ シート名を変更する
Workbookオブジェクト.Name = “変更後シート名”

‘ シート名を取得する
Dim sheetName As String
sheetName = Workbookオブジェクト.Name

設定値

シート名を変更することが出来ます。
Nameプロパティに変更したいシート名を代入します。

変更後のシート名がブック内に既に存在する場合はエラーとなります。
ブック内に同名のシートが存在しないか、存在チェックを事前に行うことをオススメします。

めい

シートの存在チェックについては、以下の記事を参考にしてください!

戻り値

Worksheetオブジェクトに設定されている、シート名を返却します。

サンプルコード

シート名を変更する

以下のサンプルコードでは、アクティブシートのシート名を当日の日付(yyyyMMdd)に変更しています。
前述の通り、シートの存在チェックを事前に行うとより安全に使用できます。

サンプルコード
Public Sub changeSheetName()
    Dim dateStr As String

    ' 日付(yyyyMMdd)を取得する
    dateStr = Format(Date, "yyyyMMdd")

    ' アクティブシートのシート名を 当日日付(yyyyMMdd) に変更する
    ActiveSheet.Name = dateStr
End Sub

シート名を取得する

以下のサンプルコードでは、アクティブシートのシート名を取得し、その後メッセージボックスに出力します。

サンプルコード
Public Sub getSheetName()
    Dim sheetName As String

    ' アクティブシートのシート名取得
    sheetName = ActiveSheet.Name

    ' メッセージボックスにシート名を出力
    MsgBox sheetName, vbInformation
End Sub

ブック内のシート名を取得し配列に格納する

以下のサンプルコードでは、アクティブブック内にあるすべてのシート名をString型の配列に格納しています。

サンプルコード
Public Sub main()
    Dim wsNameArray() As String

    ' アクティブブックのシート名を取得する
    wsNameArray = getBookInSheetName(ActiveWorkbook)
End Sub

Private Function getBookInSheetName(ByVal wbObj As Workbook) As String()
    Dim wsNameArray() As String
    Dim sheetCount As Integer
    Dim i As Integer

    ' ブック内のシート数を取得
    sheetCount = wbObj.Sheets.Count

    ' 配列のサイズを設定
    ReDim wsNameArray(1 To sheetCount)

    For i = LBound(wsNameArray) To UBound(wsNameArray)

        ' シート名を配列に格納
        wsNameArray(i) = wbObj.Worksheets(i).Name
    Next i

    ' 配列を返却
    getBookInSheetName = wsNameArray
End Function

最後に

今回は、シート名の取得とシート名の変更について解説しました。

シート名の変更時には、存在チェックも忘れずに行うようにしましょう!

本記事が、皆さんのお力になれば幸いです!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大手外資系コンサルティングファーム勤務。ExcelVBA歴は8年。金融関係のプロジェクトにて約100万レコードを処理するマクロの開発実績あり。ExcelVBAの基礎・応用情報を発信中。

コメント

コメントする

CAPTCHA