【エクセルマクロ】シートコピーしてシート名を変更:5選

VBA-シートコピーしてシート名を変更-アイキャッチ ExcelVBA

このページのマクロコードは、コピペで使えます。
ぜひお試しください!

シートコピーしてシート名変更(翌日の日付_パターン①)

以下のExcelVBAを実行すると、アクティブシートをコピーして翌日シートを作成します。


Sub 明日のシート追加()

Dim Ws As Worksheet
Dim Flg As Boolean
Dim GetDay As String
    
    'アクティブシート名の翌日が何月何日か取得
    GetDay = Format(DateValue(Year(Date) & "年" & ActiveSheet.Name) + 1, "m月d日")
     
    Flg = False
    
    'すでに同名シートがないかチェック
    For Each Ws In Worksheets
        If GetDay = Ws.Name Then
            Flg = True
            Exit For
        End If
    Next
        
    '同名シートがなければ
    If Flg = False Then
    
        'シートを末尾にコピーして、シート名を変更する
        ActiveSheet.Copy After:=ActiveSheet
        ActiveSheet.Name = GetDay
        
        MsgBox "完了"
            
    Else
        MsgBox "すでに翌日シートが存在しています。処理停止"
    End If

End Sub

マクロ実行前

「5月1日」シートが存在しています。


 

マクロ実行後

シートをコピーして、シート名を翌日に変更します。

今回の場合、「5月1日」シートをコピーして「5月2日」シートを作成します。


 

下図のように「5月1日」シートを開いた状態でマクロを実行した場合、

すでに「5月2日」シートが存在するためエラーメッセージを表示します。


 
 

シートコピーしてシート名変更(翌日の日付_パターン②)

以下のExcelVBAを実行すると、雛形となるシートをコピーして翌日シートを作成します。


Sub 翌日シート追加()

Dim Ws As Worksheet
Dim Kihonsht As Worksheet
Dim Flg As Boolean
Dim GetDay As String

    Set Kihonsht = Sheets("基本シート")

    '1番右端のシート名が何月何日か取得してプラス1日
    GetDay = Format(DateValue(Year(Date) & "年" & Sheets(Sheets.Count).Name) + 1, "m月d日")

    Flg = False

    'すでに同名シートがないかチェック
    For Each Ws In Worksheets
        If GetDay = Ws.Name Then
            Flg = True
            Exit For
        End If
    Next

    '同名シートがなければ
    If Flg = False Then

        '1番右端にシートをコピーして、シート名を変更する
        Kihonsht.Copy After:=Worksheets(Worksheets.Count)
        ActiveSheet.Name = GetDay

        'マクロボタン削除
        ActiveSheet.Shapes("Button 1").Delete

        MsgBox "完了"
    End If

End Sub

マクロ実行前

「基本シート」と「5月1日」シートが存在しています。

マクロボタンは「基本シート」にのみ設置します。


 

マクロ実行後

「基本シート」をコピーして、シート名を翌日に変更します。

マクロボタンをクリックするとき、1番右にある「5月1日」シートから日付を読み取り、

「5月1日」にプラス1日をした「5月2日」シートを作成します。


 

マクロボタンの削除について補足

[ActiveSheet.Shapes(“Button 1”).Delete] で、コピーしたシートからマクロボタンを削除します。

マクロボタンの名称を取得(ここでは 「Button 1」)するには、

マクロボタンを選択状態にしてから「検索と選択」で、「オブジェクトの選択と表示」


 

マクロボタンの名称を取得できます。


 
 

シートコピーしてシート名変更(今日の日付)

以下のExcelVBAを実行すると、雛形となるシートをコピーして本日シートを作成します。


Sub 今日のシート追加()

Dim Ws As Worksheet
Dim Kihonsht As Worksheet
Dim Flg As Boolean
Dim GetDay As String

    Set Kihonsht = Sheets("基本シート")

    '本日の日付を取得
    GetDay = Format(Date, "m月d日")

    Flg = False

    'すでに同名シートがないかチェック
    For Each Ws In Worksheets
        If GetDay = Ws.Name Then
            Flg = True
            Exit For
        End If
    Next

    '同名シートがなければ
    If Flg = False Then

        '1番右端にシートをコピーして、シート名を変更する
        Kihonsht.Copy After:=Worksheets(Worksheets.Count)
        ActiveSheet.Name = GetDay

        'マクロボタン削除
        ActiveSheet.Shapes("Button 1").Delete

        MsgBox "完了"
    End If

End Sub

マクロ実行前

「基本シート」と「5月1日」シートが存在しています。

マクロボタンは「基本シート」にのみ設置します。


 

マクロ実行後

「基本シート」をコピーして、シート名を今日の日付に変更します。

(今日の日付:2022/10/9)

すでに今日の日付のシートが存在する場合は、シートを作成しません。


 
 

シートコピーしてシート名変更(連番)

以下のExcelVBAを実行すると、雛形シートをコピーして連番シートを作成します。


Sub 連番シート追加()

Dim Kihonsht As Worksheet
Dim i As Long

    Set Kihonsht = Sheets("基本シート")
    
    Application.ScreenUpdating = False
    
    For i = 1 To 10
    
        '1番右端にシートをコピーして、シート名を変更する
        Kihonsht.Copy After:=Worksheets(Worksheets.Count)
        ActiveSheet.Name = i

        'マクロボタン削除
        ActiveSheet.Shapes("Button 1").Delete
    
    Next i

    Application.ScreenUpdating = True

    MsgBox "完了"

End Sub

マクロ実行前

「基本シート」が存在しています。

マクロボタンは「基本シート」にのみ設置します。


 

マクロ実行後

「基本シート」をコピーして、連番で「1~10」シートを一括作成します。


 
 

シートコピーしてシート名変更(特定名称)

以下のExcelVBAを実行すると、雛形シートをコピーして特定の名前のシートを作成します。


Sub 指定名称のシート追加()

Dim Kihonsht As Worksheet
Dim i As Long
Dim A As Variant

    '配列に値格納
    A = Array("りんご", "めろん", "ばなな")

    Set Kihonsht = Sheets("基本シート")
    
    Application.ScreenUpdating = False
    
    '配列ループ
    For i = 0 To UBound(A)
    
        '1番右端にシートをコピーして、シート名を変更する
        Kihonsht.Copy After:=Worksheets(Worksheets.Count)
        ActiveSheet.Name = A(i)

        'マクロボタン削除
        ActiveSheet.Shapes("Button 1").Delete
    
    Next i

    Application.ScreenUpdating = True

    MsgBox "完了"

End Sub

マクロ実行前

「基本シート」が存在しています。

マクロボタンは「基本シート」にのみ設置します。


 

マクロ実行後

「基本シート」をコピーして、配列「A」で指定した名称のシートを作成します。


 
 
この記事がお役に立ちますと幸いです。
 

・【エクセルマクロ】シートの追加・削除を自動化まとめ
 

【エクセルマクロ】シートの追加・削除を自動化:超便利12選
...

 

「Excel自動化[最強]時短仕事術」
自動化の基礎と時短に役立つテクニック解説書
毎日の定型業務を手際良く行え、大幅な業務効率化を実現!