
データ入力や分析の作業をしていて10くらいあるシート名を一括で変更したいんだけど、手作業でやるのめんどくさいなあ。。。
まとめて一気に変えられたらいいのに…

VBA機能を使えばシート名をまとめて変更できるよ!

そうなの!?
でもVBAってなんか難しそうで私にはできないと思う・・・

じゃあ一緒にVBAを使って複数のシート名を一括でサクッと変える方法を伝えるね!
データ入力や分析をしていると、Excelのシートがどんどん増えて、「シート1」「シート2」…とデフォルトのままになっていたり、「〇〇_データ」「〇〇_分析」のように、シート名を整理したくなること、ありますよね。
今回は、ExcelのVBA(Visual Basic for Applications)という機能を使って、複数のシート名を一括でサクッと変更する方法を、初心者さんでもわかるように丁寧に解説します。
前回、シートの一括作成の方法をお伝えしました!この方法を知りたい方は下記記事も見てみてくださいね!

VBAってなに?
「VBAって聞いたことあるけど難しそう…」と感じるかもしれません。
今回は、慣れるまでは難しいVBAを使っていきますが、難しい知識は一切不要!
たった5分で終わる簡単な設定と、コピペで使えるコードを用意したので、一緒にやっていきましょう。
VBAは、Excelの操作を自動化するためのプログラミング言語です。
「マクロ」という言葉もよく聞きますが、マクロはVBAで書かれたプログラムのことです。
Step 1:まずは「開発」タブを表示しよう
VBAを使うには、まずExcelに「開発」タブを表示させる必要があります。
初期設定では非表示になっていることが多いので、以下の手順で「開発」タブ表示させましょう。
1. 「ファイル」タブをクリック

2. 左側のメニューから「オプション」を選択

3. 「リボンのユーザー設定」をクリック
4. 右側の「メインタブ」の項目にある「開発」にチェックを入れて「OK」をクリック

これで、Excelのリボンに「開発」タブが表示されましたね。

Step 2:VBAエディターを開いてみよう
開発タブが表示されたら、いよいよマクロを記述する準備です。
1. Excelの画面で Alt
+ F11
を同時に押す
2. 「Microsoft Visual Basic for Applications」という画面(VBAエディター)が立ち上がる
Alt
キーとF11
キーは、VBAエディターを開くショートカットキーなので覚えておくと便利ですよ!
Step 3:シート名を一括変更するコードをコピペしよう(メイン!!)
VBAエディターを開いたら、以下の手順でコードを記述します。
1. 左側のプロジェクトエクスプローラーにある「VBAProject」から「Microsoft Excel Objects」の中にある「ThisWorkbook」をダブルクリック
2. 右側に白いコード入力画面が表示されるので、以下のコードをコピーして貼り付ける
'このマクロは、全てのシート名の先頭に特定の文字列を追加します。
Sub AddPrefixToSheetNames()
' ----------------------------------------------------
' 追加したい文字列をここに設定してください
' 例: "2025年_データ_"
' ----------------------------------------------------
Dim prefix As String
prefix = "2025年_データ_" ' ←ココを好きな文字に変更してください!
' Excelの全てのシートを1つずつ処理するループ
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
' シート名の先頭にprefixを追加
ws.Name = prefix & ws.Name
Next ws
' 処理完了のメッセージを表示
MsgBox "シート名の変更が完了しました。", vbInformation
End Sub

Step 4:マクロを実行してみよう!
コードを貼り付けたら、いよいよ実行です。
1. コード入力画面のどこかをクリック 2. ツールバーにある「実行」(▶のようなアイコン)ボタンをクリック 3. 「マクロ」ダイアログボックスが表示されたら、「AddPrefixToSheetNames」を選択して「実行」をクリック
F5
キーを押すだけでも実行できますよ。
実行すると、「シート名の変更が完了しました。」というメッセージが表示されるはずです。
【マクロ実行前のシート】

【マクロ実行後のシート】

Excelの画面に戻ってみてください。
シート名の先頭に「2025年_データ_」が追加されて、一括で修正されているのが確認できるはずです!
応用編:他にもできる!便利なカスタマイズコード
先ほどのコードは、シート名の先頭に文字を追加するものでしたが、VBAコードを少し変えるだけで、もっといろんなことができます。
1. シート名の末尾に文字を追加する
'シート名の末尾に「_修正済み」を追加
ws.Name = ws.Name & "_修正済み"
2. シート名の一部を別の文字に置き換える
'シート名の中の「旧_データ」を「新_データ」に置き換える
ws.Name = Replace(ws.Name, "旧_データ", "新_データ")
3. シート名から特定の文字を削除する
'シート名の中の「不要な文字」を削除する
ws.Name = Replace(ws.Name, "不要な文字", "")
4. シート名を「シート1」「シート2」…のように連番にする
'シートを「シート1」「シート2」のように連番にする
ws.Name = "シート" & ws.Index
これらのコードを、先ほどのFor Each ws In ThisWorkbook.Worksheets
のループの中にあるws.Name = ...
の部分と置き換えることで、自由にカスタマイズできます。
例:1. シート名の末尾に文字を追加する
'このマクロは、全てのシート名の末尾に特定の文字列を追加します。
Sub AddPrefixToSheetNames()
' ----------------------------------------------------
' 追加したい文字列をここに設定してください
' 例: "_修正済み"
' ----------------------------------------------------
'シート名の末尾に「_修正済み」を追加
ws.Name = ws.Name & "_修正済み" '←ココを好きな文字に変更してください!
' Excelの全てのシートを1つずつ処理するループ
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
' シート名の先頭にprefixを追加
ws.Name = prefix & ws.Name
Next ws
' 処理完了のメッセージを表示
MsgBox "シート名の変更が完了しました。", vbInformation
End Sub
まとめ:もうシート名の変更で悩まない!
いかがでしたか?
VBAと聞くと難しそうに感じるかもしれませんが、一度やり方を覚えてしまえば、面倒な手作業から解放され、作業効率が格段にアップします。
もし、「こんな変更はできる?」といった疑問があれば、気軽に質問してくださいね。
皆さんのExcel作業が少しでも楽になれば嬉しいです!
最後に、変更後のファイルは念のため別名で保存することをおすすめします。
これで、もうシート名の変更で消耗することはありませんよ!

コメント