非プログラマーでもできる!業務の自動化

【VBAマクロダウンロード】Excelの複数のシート名を一括で変更する方法

当ページのリンクの一部に広告が含まれています。
Excelに入力されたデータをもとに、Excelのシート名を一括で変更するVBAマクロ

課題・悩み「Excelのシート名の変更をラクに行いたい」

解決策「Excelに入力されたデータをもとに、Excelのシート名を一括で変更するVBAマクロ」を解説

Excelの複数のシート名を変更したい!けど、1つ1つ変更するのは時間がかかる…

そこで、入力したデータをもとに、Excelのシート名を一気に変更するVBAマクロを作成しました。

ボタンを押すだけで、シート名を一括変更できます。

この記事では

【Excelに入力されたデータをもとに、Excelのシート名を一括で変更するVBAマクロ】を図解で解説しています。

VBAマクロファイルを配布中。

以下のボタンよりダウンロードしてください。

目次

VBAマクロでExcelのシート名を変更する方法

.Name プロパティはVBA(Visual Basic for Applications)でよく使われるプロパティの一つです。

Excelのシート名を参照したり変更したりする際に使用します。

.Nameプロパティでシート名を変更する

このコードの意味は、”Sheet1″と名付けられたシートの名前を”新しいシート名”に変更する、というものです。

Sheets("Sheet1").Name = "新しいシート名"

.Nameプロパティでシート名を変更する

  • Sheets(“Sheet1”) は “Sheet1” という名前のシートを指定しています。
  • .Name はそのシートの名前を取得または設定するプロパティです。
  • “新しいシート名” は新しく設定するシート名です。
Sub ChangeSheetName()
    Sheets("Sheet1").Name = "新しいシート名"
End Sub

Excelに入力されたデータをもとに、Excelのシート名を一括で変更するVBAマクロファイルの使い方

Excelに入力されたデータをもとに、Excelのシート名を一括で変更するVBAマクロファイルの使い方

  • シート名を取得する
  • シート名の変更
  • 入力データの削除

シート名を取得する

【シート名の取得】ボタンをクリック

Excelに入力されたデータをもとに、Excelのシート名を一括で変更するVBAマクロシート名を取得する【シート名の取得】ボタンをクリックの画像

VBAマクロファイルの【シート名の取得】のボタンをクリックします。

シート名を取得する

  • 【シート名の取得】ボタンをクリック
  • Excelを選択
  • シート名の表示
  • シート名の入力

Excelを選択

Excelに入力されたデータをもとに、Excelのシート名を一括で変更するVBAマクロExcelを選択の画像

ダイアログボックスから、シート名を変更したいExcelを選択して【OK】をクリックします。

シート名の表示

Excelに入力されたデータをもとに、Excelのシート名を一括で変更するVBAマクロシート名の表示の画像

選択したExcelのシート名が一覧で、VBAマクロファイルのB列に表示されました。

シート名の変更

シート名の入力

Excelに入力されたデータをもとに、Excelのシート名を一括で変更するVBAマクロシート名の変更シート名の入力の画像

VBAマクロファイルの対応するC列に、変更したいシート名を入力します。

シート名の変更

  • シート名の表示
  • シート名の入力
  • 【シート名の変更】ボタンをクリック
  • シート名の変更完了
  • 【入力データ削除】をクリック

【シート名の変更】ボタンをクリック

Excelに入力されたデータをもとに、Excelのシート名を一括で変更するVBAマクロ【シート名の変更】ボタンをクリックの画像

VBAマクロファイルの【シート名の変更】のボタンをクリックします。

シート名の変更完了

シート名が変更されました。

入力データの削除

【入力データ削除】をクリック

Excelに入力されたデータをもとに、Excelのシート名を一括で変更するVBAマクロ入力データの削除【入力データ削除】をクリックの画像

VBAマクロファイルの【入力データ削除】をクリックすると、B列とC列のデータが削除されます。

Excelに入力されたデータをもとに、Excelのシート名を一括で変更するVBAマクロのQ&A

VBAを使用してExcelのシート名を変更する方法を教えてください。

VBAを使用してExcelのシート名を変更する方法は、【.Name】を使用します。 詳しくは、#VBAマクロでExcelのシート名を変更する方法をご覧ください。

WorksheetオブジェクトのNameプロパティを使用してExcelのシート名を変更する方法を教えてください。

#VBAマクロでExcelのシート名を変更する方法をご覧ください。

Excelに入力されたデータをもとに、Excelのシート名を一括で変更するVBAマクロの解説

【Excelに入力されたデータをもとに、Excelのシート名を一括で変更するVBAマクロ】は3つのコードで成り立っています。

Excelに入力されたデータをもとに、Excelのシート名を一括で変更するVBAマクロの解説

  • 特定のExcelのシート名をすべて出力するVBAマクロ
  • Excelのデータを元に特定のExcelのシート名を一括変更するVBAマクロ
  • シートのデータを削除するVBAマクロ

特定のExcelのシート名をすべて出力するVBAマクロ

まずは、シート名を変更したいExcelの既存のシート名を取得するVBAマクロです。

Excelのデータを元に特定のExcelのシート名を一括変更するVBAマクロ

次に、入力したデータを元に対象のExcelのシート名を変更するVBAマクロです。

シートのデータを削除するVBAマクロ

最後に入力してあるデータを一括削除するVBAマクロです。

特定のExcelのシート名をすべて出力するVBAマクロの解説

このマクロは、ユーザーにExcelファイルを選択させ、そのファイル内のすべてのシート名をリストします。

選択したファイルのフルパスはセルA1に出力され、シート名はセルB5から順に出力されます。エラーハンドリングも考慮されており、処理が正常に完了すると「完了しました」というメッセージが表示されます。

Option Explicit

Sub ListSheets()
    ' 処理を開始
    On Error GoTo ErrorHandler

    ' Sheet1のB5セルから下のB列のデータを削除
    ThisWorkbook.Sheets("Sheet1").Range("B5:B" & Rows.Count).Clear

    ' ファイルダイアログを開く
    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    fd.Title = "Excelファイルを選択してください"
    fd.Filters.Add "Excelファイル", "*.xls; *.xlsx; *.xlsm", 1

    ' ファイルを選択
    If fd.Show = -1 Then
        ' 選択したファイルを開く
        Dim wb As Workbook
        Set wb = Workbooks.Open(fd.SelectedItems(1))

        ' 選択したExcelファイルのパスをA1に出力
        ThisWorkbook.Sheets("Sheet1").Cells(1, 1).Value = wb.FullName

        ' Sheet1のB5セルからシート名を出力
        Dim i As Long
        For i = 1 To wb.Sheets.Count
            ThisWorkbook.Sheets("Sheet1").Cells(i + 4, 2).Value = wb.Sheets(i).Name
        Next i

        ' 開いたファイルを閉じる
        wb.Close False
    End If

    ' 完了メッセージを表示
    MsgBox "完了しました"
    Exit Sub

ErrorHandler:
    ' エラーメッセージを表示
    MsgBox "エラーが発生しました: " & Err.Description
End Sub

コードの変更点

コードの変更点

  • 出力シート名
  • 出力開始位置
  • 対応するファイル形式

出力シート名

シート名を出力する先のシートを変更する場合、シート名を適切なものに変更します。

ThisWorkbook.Sheets("Sheet1")

出力開始位置

シート名の出力開始位置を変更する場合、セルのアドレスを変更します。

Range("B5:B" & Rows.Count) と Cells(i + 4, 2) 

対応するファイル形式

対応するExcelファイルの形式を変更する場合、フィルタの部分を変更します。

fd.Filters.Add "Excelファイル", "*.xls; *.xlsx; *.xlsm", 1 

注意点

データが大量にある場合、シート名の出力に時間がかかる場合があります。

VBAマクロで実行した操作は元に戻せないので、操作前にデータのバックアップを取ることを推奨します。

環境設定

特に必要な環境設定はありませんが、マクロの実行を許可する必要があります。

セキュリティ設定でマクロを有効にし、信頼されたソースからのマクロのみを実行するよう設定します。

各コードの解説

各コードの解説

  • データの削除
  • ファイル選択
  • ファイルの開く
  • ファイルパスの出力
  • シート名の出力
  • ファイルの閉じる
  • 完了メッセージの表示
  • エラーハンドリング

データの削除

Sheet1のB5セルから下のB列のデータを削除。この部分で前回の結果がクリアされます。

    ' Sheet1のB5セルから下のB列のデータを削除
    ThisWorkbook.Sheets("Sheet1").Range("B5:B" & Rows.Count).Clear

ファイル選択

ユーザーにExcelファイルを選択させるダイアログを表示。対象となるファイルはExcelの標準形式に限定されます。

    ' ファイルダイアログを開く
    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    fd.Title = "Excelファイルを選択してください"
    fd.Filters.Add "Excelファイル", "*.xls; *.xlsx; *.xlsm", 1

ファイルの開く

選択したExcelファイルを開きます。

    ' ファイルを選択
    If fd.Show = -1 Then
        ' 選択したファイルを開く
        Dim wb As Workbook
        Set wb = Workbooks.Open(fd.SelectedItems(1))

ファイルパスの出力

選択したExcelファイルのフルパスをSheet1のセルA1に出力します。

        ' 選択したExcelファイルのパスをA1に出力
        ThisWorkbook.Sheets("Sheet1").Cells(1, 1).Value = wb.FullName

シート名の出力

選択したExcelファイルのすべてのシート名をSheet1のセルB5から順に出力します。

        ' Sheet1のB5セルからシート名を出力
        Dim i As Long
        For i = 1 To wb.Sheets.Count
            ThisWorkbook.Sheets("Sheet1").Cells(i + 4, 2).Value = wb.Sheets(i).Name
        Next i

ファイルの閉じる

開いたExcelファイルを閉じます。変更を保存しないようにしています。

        ' 開いたファイルを閉じる
        wb.Close False

完了メッセージの表示

処理が完了したらメッセージボックスで「完了しました」と表示します。

    ' 完了メッセージを表示
    MsgBox "完了しました"
    Exit Sub

エラーハンドリング

エラーが発生した場合、エラーメッセージを表示します。これにより、エラーが何であったかを特定しやすくします。

ErrorHandler:
    ' エラーメッセージを表示
    MsgBox "エラーが発生しました: " & Err.Description
End Sub

Excelのデータを元に特定のExcelのシート名を一括変更するVBAマクロのコードの解説

このVBAマクロは、指定されたExcelファイル内のシート名を変更する処理を行います。変更前のシート名と変更後のシート名は、別のExcelファイル(ThisWorkbookのSheet1)のB列とC列にそれぞれ記載されています。

A1セルには対象のExcelファイルのパスが指定されています。このマクロは以下の処理を順番に実行します。

Option Explicit
Sub ChangeSheetNames()
    ' エラーハンドリングの開始
    On Error GoTo ErrorHandler
    ' ThisWorkbookのSheet1のA1セルの内容をファイルパスとして取得
    Dim filePath As String
    filePath = ThisWorkbook.Sheets("Sheet1").Cells(1, 1).Value
    ' 指定されたパスのワークブックを開く
    Dim wb As Workbook
    Set wb = Workbooks.Open(filePath)
    ' ThisWorkbookのSheet1のB5セルから下のセルに記載されているシート名に対応する
    ' ThisWorkbookのSheet1のB列のシート名とC列の新しい名前で変更
    ' 新しい名前が現在の名前と同じ場合、またはC列にデータが入力されていない場合はスキップ
    Dim i As Long
    Dim lastRow As Long
    lastRow = ThisWorkbook.Sheets("Sheet1").Cells(Rows.Count, 2).End(xlUp).Row
    For i = 5 To lastRow
        Dim oldName As String
        Dim newName As String
        oldName = ThisWorkbook.Sheets("Sheet1").Cells(i, 2).Value
        newName = ThisWorkbook.Sheets("Sheet1").Cells(i, 3).Value
        If oldName <> newName And newName <> "" Then ' シート名が異なり、新しい名前が空でない場合のみ変更
            wb.Sheets(oldName).Name = newName
        End If
    Next i
    ' 開いたファイルを保存して閉じる
    wb.Close SaveChanges:=True
    ' 処理完了のメッセージを表示
    MsgBox "完了しました", vbInformation
    ' エラーハンドリングの終了
    Exit Sub
ErrorHandler:
    ' エラーが発生した場合の処理
    MsgBox "エラーが発生しました:" & Err.Description, vbExclamation
    If Not wb Is Nothing Then
        wb.Close SaveChanges:=False
    End If
End Sub

Excelのデータを元に特定のExcelのシート名を一括変更するVBAマクロのコードの解説

  • 対象のExcelファイルを開く。
  • B列に記載された旧シート名とC列に記載された新シート名に基づいて、対象ファイルのシート名を変更する。
  • 変更が完了したら対象ファイルを保存して閉じる。
  • 「完了しました」というメッセージを表示する。

注意点

注意点

  • データ量が大量の場合
  • VBAマクロでの操作は元に戻せない

データ量が大量の場合

このコードは、B列とC列に記載された全てのシート名に対して処理を行うため、データが大量にある場合は処理に時間がかかることがあります。

VBAマクロでの操作は元に戻せない

このマクロによって変更されたシート名は、Ctrl+Z(元に戻す)などの操作で元に戻せません。変更前のデータをバックアップしておくことをおすすめします。

環境設定

特別な環境設定は必要ありません。

ただし、マクロを実行する際には、セキュリティ設定でマクロを有効にする必要があります。

Excelの「ファイル」メニュー >「オプション」>「セキュリティセンター」>「セキュリティセンターの設定」からマクロの設定を調整できます。

各コードの解説

各コードの解説

  • ファイルパスの取得
  • ファイルの開く
  • シート名の変更
  • ファイルの保存と閉じる
  • 完了メッセージの表示
  • エラーハンドリング

ファイルパスの取得

対象となるExcelファイルのパスをThisWorkbookのSheet1のA1セルから取得します。

    ' ThisWorkbookのSheet1のA1セルの内容をファイルパスとして取得
    Dim filePath As String
    filePath = ThisWorkbook.Sheets("Sheet1").Cells(1, 1).Value

ファイルの開く

指定されたパスのExcelファイルを開きます。

    ' 指定されたパスのワークブックを開く
    Dim wb As Workbook
    Set wb = Workbooks.Open(filePath)

シート名の変更

B列に記載された旧シート名とC列に記載された新シート名に基づいて、対象ファイルのシート名を変更します。新しい名前が現在の名前と同じ場合、またはC列にデータが入力されていない場合は、そのシートの名前の変更はスキップされます。

    ' ThisWorkbookのSheet1のB5セルから下のセルに記載されているシート名に対応する
    ' ThisWorkbookのSheet1のB列のシート名とC列の新しい名前で変更
    ' 新しい名前が現在の名前と同じ場合、またはC列にデータが入力されていない場合はスキップ
    Dim i As Long
    Dim lastRow As Long
    lastRow = ThisWorkbook.Sheets("Sheet1").Cells(Rows.Count, 2).End(xlUp).Row
    For i = 5 To lastRow
        Dim oldName As String
        Dim newName As String
        oldName = ThisWorkbook.Sheets("Sheet1").Cells(i, 2).Value
        newName = ThisWorkbook.Sheets("Sheet1").Cells(i, 3).Value
        If oldName <> newName And newName <> "" Then ' シート名が異なり、新しい名前が空でない場合のみ変更
            wb.Sheets(oldName).Name = newName
        End If
    Next i

ファイルの保存と閉じる

シート名の変更が完了したら、対象のExcelファイルを保存して閉じます。

    ' 開いたファイルを保存して閉じる
    wb.Close SaveChanges:=True

完了メッセージの表示

処理が完了したら、「完了しました」というメッセージを表示します。

    ' 処理完了のメッセージを表示
    MsgBox "完了しました", vbInformation

エラーハンドリング

エラーが発生した場合にエラーメッセージを表示し、開いたワークブックを閉じる処理を行います。

ErrorHandler:
    ' エラーが発生した場合の処理
    MsgBox "エラーが発生しました:" & Err.Description, vbExclamation
    If Not wb Is Nothing Then
        wb.Close SaveChanges:=False
    End If

シートのデータを削除するVBAマクロのコードの解説

このコードはExcelのVBAマクロで、指定されたシート(Sheet1)のA1セルとB5セルから下および右に入力されているデータを削除します。

処理が正常に完了した場合は、「完了しました」というメッセージが表示されます。

エラーが発生した場合は、エラーの内容が表示されます。

Sub DeleteData()
    ' ThisWorkbookのSheet1にアクセス
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")

    ' エラーハンドリングの開始
    On Error GoTo ErrorHandler

    ' A1セルのデータを削除
    ws.Cells(1, 1).ClearContents

    ' B5から下と右に入力されている範囲を削除
    ws.Range(ws.Cells(5, 2), ws.Cells(ws.Cells(Rows.Count, 2).End(xlUp).Row, ws.Cells(5, Columns.Count).End(xlToLeft).Column)).ClearContents

    ' 完了メッセージの表示
    MsgBox "完了しました", vbInformation

    ' 正常終了
    Exit Sub

ErrorHandler:
    ' エラー発生時の処理
    MsgBox "エラーが発生しました: " & Err.Description, vbCritical
End Sub

コードの変更箇所

コードの変更箇所

  • シート名の変更
  • 削除するセルの変更

シート名の変更

削除するデータがあるシート名が「Sheet1」でない場合、シート名を変更します。

コード内で指定しているシート名が「Sheet1」です。自分の環境で使用するシート名が異なる場合、この部分を適切なシート名に変更する必要があります。

例: Set ws = ThisWorkbook.Sheets(“MySheet”) など。

Set ws = ThisWorkbook.Sheets("Sheet1")

削除するセルの変更

削除を開始するセルがB5でない場合、削除するセルの範囲を変更します。

コードは、B5セルから下および右にあるデータを削除します。

削除を開始するセルが異なる場合、この部分を適切なセルに変更する必要があります。

例: B6セルから削除する場合は、ws.Cells(6, 2) など。

ws.Cells(5, 2)

注意点

データが大量にある場合、処理に時間がかかることがあります。

VBAマクロで実行した操作は、通常、元に戻せません(Ctrl + Zで元に戻せない)。

処理を実行する前に、重要なデータのバックアップを取ることがおすすめです。

環境設定

特に追加の環境設定は必要ありませんが、マクロを実行する際は、Excelのセキュリティ設定でマクロの実行を許可する必要があります。

各コードの解説

各コードの解説

  • シートの設定
  • エラーハンドリング
  • A1セルの削除
  • B5セルからの削除
  • 完了メッセージ

シートの設定

ThisWorkbookのSheet1にアクセスします。

    ' ThisWorkbookのSheet1にアクセス
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")

エラーハンドリング

エラーが発生した場合にエラーメッセージを表示します。

    ' エラーハンドリングの開始
    On Error GoTo ErrorHandler

A1セルの削除

A1セルのデータを削除します。

    ' A1セルのデータを削除
    ws.Cells(1, 1).ClearContents

B5セルからの削除

B5セルから下および右に入力されているデータを削除します。

    ' B5から下と右に入力されている範囲を削除
    ws.Range(ws.Cells(5, 2), ws.Cells(ws.Cells(Rows.Count, 2).End(xlUp).Row, ws.Cells(5, Columns.Count).End(xlToLeft).Column)).ClearContents

完了メッセージ

処理が正常に完了した場合、「完了しました」というメッセージを表示します。

    ' 完了メッセージの表示
    MsgBox "完了しました", vbInformation

まとめ:

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

コメント

コメントする

目次