📋
RenameSheet
シート管理シートの名前を変更する
ワークシートの名前をVBAで変更するマクロです。Worksheet.Nameプロパティに新しい名前を代入するだけで即座にリネームできます。日付・番号・テキスト置換などを組み合わせた動的な名前生成や、一定規則で複数シートを一括リネームする処理に活用します。重複名や使用不可文字(/、\、?、*など)のチェックを組み込むことで安全なリネームが実現します。内部ではWorksheet.Nameプロパティに新しい文字列を直接代入するだけの処理ですが、Excelのシート名には31文字制限や使用不可文字(\ / ? * [ ] :)があるため、代入前にバリデーション処理を挟むと安全です。AddNewSheetで作成した直後に本マクロで意味のある名前を付ける流れがよく使われる組み合わせです。タブをダブルクリックして手入力する操作を、まとめて自動化できる点が実務上のメリットです。

📖 使い方
- VBAエディタを開く(Alt + F11)
- モジュールを挿入(挿入 > モジュール)
- 下記VBAコードをコピー&ペースト
- ブック上で実行(Alt + F8 でマクロ選択)
💡 実行例: 実行すると現在のシート名と新しいシート名を入力するダイアログが表示される
🎯 活用シーン
- ✓月次処理で「Sheet1」から「2025年1月」形式に自動リネーム
- ✓一括インポートしたデータシートをセル値に基づいて命名
- ✓プロジェクトテンプレートのシート名を案件名で一括置換
- ✓自動生成した「Sheet1」「Sheet2」のような無機質な名前を、案件名や日付ベースの分かりやすい名前に一括変換したいとき
- ✓命名規則が変更になった際に、既存の全シート名を新ルールへ一括リネームしたいとき
💡 実装のヒント
- ▸Sheets名に使えない文字: \ / ? * [ ] : を事前チェックします
- ▸31文字以内というシート名の制限に注意が必要です
- ▸既存シート名との重複チェックはSheetsコレクションをループして確認します
- ▸重複するシート名を自動回避したい場合は、既存名をチェックして末尾に連番を付与するロジックを追加してください。
- ▸日本語のシート名は文字数制限に達しやすいため、略称やコードを併用した命名ルールを検討することをお勧めします。
💻 VBAコード
' RenameSheet
' -----------------
' Macro Name: RenameSheet
' Description: シートの名前を変更する
' Parameters: なし
' Returns: なし
' Usage: 実行すると現在のシート名と新しいシート名を入力するダイアログが表示される
' -----------------
Sub RenameSheet()
Dim ws As Worksheet
Dim currentName As String
Dim newName As String
Dim i As Long
On Error GoTo ErrorHandler
For i = 1 To Worksheets.Count
If Worksheets(i).Name = InputBox("名前を変更するシート名を入力:", "シート名変更", "Sheet1") Then
Set ws = Worksheets(i)
Exit For
End If
Next i
If ws Is Nothing Then
MsgBox "指定されたシートが見つかりません。", vbExclamation
Exit Sub
End If
currentName = ws.Name
newName = InputBox("新しいシート名を入力:", "シート名変更", currentName)
If newName = "" Then
MsgBox "キャンセルされました。", vbInformation
Exit Sub
End If
For i = 1 To Worksheets.Count
If Worksheets(i).Name = newName And Worksheets(i).Name <> currentName Then
MsgBox "「" & newName & "」は既に存在します。", vbExclamation
Exit Sub
End If
Next i
ws.Name = newName
MsgBox "「" & currentName & "」を「" & newName & "」に変更しました。", vbInformation
Exit Sub
ErrorHandler:
MsgBox "エラーが発生しました: " & Err.Description, vbCritical
End Sub