Categories: excel

VBAでExcelのシート名を変更する方法を徹底解説!

Excelを使っていると、シート名をわかりやすく変更したい場面がよくあります。
手動で変更することもできますが、たくさんのシートがある場合や定期的な作業には時間がかかります。

そこで便利なのが「VBA(Visual Basic for Applications)」です。
VBAを使えば、ボタンひとつで複数のシート名を一括で変更することも可能です。

本記事では、VBAでシート名を変更する基本の方法から、応用テクニックまでを初心者向けにわかりやすく解説します。
これを読めば、あなたもVBAでシート名を自在に操れるようになります!


VBAとは?簡単におさらい

VBA(Visual Basic for Applications)は、Microsoft Office製品に組み込まれているプログラミング言語です。
Excelにおいては、繰り返し作業や複雑な処理を自動化するのに役立ちます。

たとえば、次のようなことができます。

  • 複数のシート名を一括変更
  • 条件に応じて動的に名前を付ける
  • ファイル名や日付を使って名前を変更

VBAは、マクロ記録や簡単なコードから始めれば、初心者でも扱える便利なツールです。


シート名をVBAで変更する基本コード

まずは最も基本的な「シート名の変更」コードから紹介します。

Sub ChangeSheetName()
Sheets("Sheet1").Name = "売上データ"
End Sub

このコードでは、「Sheet1」という名前のシートを「売上データ」に変更しています。
ポイントは、Sheets("シート名").Name = "新しいシート名"という書き方です。

注意点

  • 同じ名前のシートがすでに存在する場合はエラーになります。
  • シート名に使えない文字(例:\ / ? * [ ] :)を含めるとエラーになります。

アクティブなシートの名前を変更する

「今選択しているシートの名前を変更したい」という場合は、以下のように書けます。

Sub RenameActiveSheet()
ActiveSheet.Name = "集計結果"
End Sub

このコードでは、現在アクティブになっているシートの名前を「集計結果」に変更します。
毎回違うシートでこのマクロを実行する場合に便利です。


複数のシート名を一括で変更する

次に、複数のシート名を一括で変更したい場合のコードです。
たとえば、3つのシートを「1月」「2月」「3月」と名付けたいときは次のようにします。

Sub RenameMultipleSheets()
Dim sheetNames As Variant
sheetNames = Array("1月", "2月", "3月")

Dim i As Integer
For i = 0 To UBound(sheetNames)
Sheets(i + 1).Name = sheetNames(i)
Next i
End Sub

このように配列を使えば、簡単に複数のシート名を一気に変更できます。
ただし、配列の数とシートの数が一致している必要があるので注意しましょう。


シート名に日付を使う(動的な名前の付け方)

毎日のデータ管理で、「2025-04-15」など日付をシート名にしたいことがあります。
そのような場合は、以下のように記述できます。

Sub RenameSheetWithDate()
Dim todayDate As String
todayDate = Format(Date, "yyyy-mm-dd")

ActiveSheet.Name = todayDate
End Sub

このコードを使えば、今日の日付が自動でシート名に反映されます。
日報や日次レポートに使うと便利です。


セルの値をシート名に使う

セルの内容を使ってシート名を決めたい場合は、以下のようにします。

Sub RenameSheetWithCellValue()
Dim newName As String
newName = Range("A1").Value

If newName <> "" Then
ActiveSheet.Name = newName
Else
MsgBox "セルA1に名前が入力されていません"
End If
End Sub

このコードは、セルA1に入力されている文字列をシート名として使います。
データ入力の担当者が直接セルに名前を記入するスタイルに向いています。


シート名変更時のエラーハンドリング

実際の運用では、変更しようとしてもエラーになることがあります。
その対策として「エラー処理(エラーハンドリング)」を加えておくと安心です。

Sub SafeRenameSheet()
On Error GoTo ErrorHandler

Dim newName As String
newName = InputBox("新しいシート名を入力してください")

If newName = "" Then Exit Sub
ActiveSheet.Name = newName
Exit Sub

ErrorHandler:
MsgBox "シート名の変更中にエラーが発生しました。" & vbCrLf & "同じ名前のシートがあるか、使用できない文字が含まれている可能性があります。"
End Sub

このようにすることで、ユーザーにわかりやすくエラー内容を通知できます。


応用:すべてのシートをループして名前を変更する

最後に、全シートをループして、自動的に連番を付ける方法を紹介します。

Sub RenameAllSheets()
Dim i As Integer
For i = 1 To Worksheets.Count
Worksheets(i).Name = "Sheet_" & i
Next i
End Sub

このコードは、すべてのシートを「Sheet_1」「Sheet_2」…という名前に一括変更します。
大量のシートを管理するときに重宝するテクニックです。


まとめ

VBAを使えば、シート名の変更作業が格段に効率化されます。
今回紹介した内容をまとめると以下のとおりです。

  • 基本的なシート名の変更は .Name = "新しい名前" でできる
  • アクティブシートや複数シートにも対応可能
  • 日付やセルの値を利用して動的に命名できる
  • エラー処理を入れておけば、実務でも安心して使える

まずは簡単なコードから試してみて、少しずつ応用力を伸ばしていきましょう。
VBAは慣れれば慣れるほど、Excel操作の大きな武器になります!

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。