【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.
シート名や列番号が正しいか確認してください。