📘 Excel逆引き事典

【VBA】特定の名前のシートを配列を使って高速に置換する方法

手作業での大量のシート置換は時間と労力を要します。この記事では、VBAを使用して特定の名前のシートを高速に置換する方法を紹介します。これにより、業務効率が大幅に向上し、ミスも減少します。

サンプルコード

VBA
Option Explicit
Sub ReplaceSheets()
    Dim ws As Worksheet, targetSheetName As String, newSheetName As String
    Dim sheetNames() As Variant
    Dim i As Long
    
    ' 対象のシート名と新しいシート名を指定
    targetSheetName = "旧シート名"
    newSheetName = "新シート名"
    
    ' シート名を配列に格納
    sheetNames = Array(targetSheetName)
    
    Application.ScreenUpdating = False
    For i = 0 To UBound(sheetNames)
        If SheetExists(sheetNames(i)) Then
            Sheets(sheetNames(i)).Copy After:=Sheets(Sheets.Count)
            ActiveSheet.Name = newSheetName & "_" & CStr(i + 1) ' 新しいシート名に変更
            Sheets(sheetNames(i)).Delete ' 元のシートを削除
        End If
    Next i
    Application.ScreenUpdating = True
End Sub

' シートが存在するか確認
Function SheetExists(sheetName As String) As Boolean
    On Error Resume Next
    Set ws = Sheets(sheetName)
    SheetExists = Not ws Is Nothing
    On Error GoTo 0
End Function

よくある質問

Q 元に戻せますか?

A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。

Q エラーが出たら?

A.
シート名や列番号が正しいか確認してください。