1つのシートをたくさんコピーする必要がある時、
シートコピー➡︎シート名変更を繰り返すの大変ですよね…
今回はそんな時に1発でシートコピー&リネームをできる
マクロを紹介します
はじめまして、さかいと申します。
自動化オタクの私が
解説させていただきます!
マクロを作る前の準備
まず、マクロを作成するために準備をしていきます
Excelファイルの上にあるツールバーに
「開発」タブを表示させます
既に表示している方は2 マクロを作るにジャンプしていただいてOKです
開発タブを表示
①ツールバーの上で右クリック
②「リボンのユーザー設定」を選択
すると、Excelのオプションが開きます
③「開発」にチェックをつけてOKをクリック
ツールバーに「開発」タブが表示されます。
これで準備完了です!
お疲れさまです!これでマクロを作ることができます!
早速マクロを作成していきましょう。
マクロを作る
①VBEを起動
「開発」タブから「Visual Basic」をクリック
または「Alt + F11」でもOKです
以下の画面が表示されます
②プロジェクトから標準モジュールを挿入
プロジェクト→挿入→標準モジュールをクリック
標準モジュールが表示されるとOKです
③Module1に以下のコードを貼り付け
Sub SheetCopy()
Dim ws As Worksheet
Dim isSheet As Boolean
Dim newSheetList As Range
Dim newSheet As Range
'選択範囲に値があるかチェック
Set newSheetList = Selection
'先頭セルに値がない場合
If IsEmpty(newSheetList.Item(1).Value) = True Then
'処理を終了
MsgBox "セルに値がありません"
Exit Sub
End If
'コピー元のシート名を入力
copySheet = Application.InputBox("コピー元", "シート複製", Type:=2)
If copySheet = "False" Then Exit Sub
'シート存在フラグを0に設定
isSheet = 0
For Each A In Sheets
'シート名が存在する場合、フラグを1に設定
If A.Name = copySheet Then
isSheet = 1
End If
Next
'シートが存在しない場合
If isSheet = 0 Then
'メッセージを表示して終了
MsgBox copySheet & "は存在しません"
Exit Sub
End If
'選択したシート名を繰り返す
For Each newSheet In newSheetList
'シートコピー後、シート名を変更
Worksheets(copySheet).Copy After:=Sheets(Sheets.count)
ActiveSheet.Name = newSheet.Value
Next
MsgBox "コピー終了!"
End Sub
④マクロを実行
初めに新規シートを追加し、
コピー後のシート名を入力します
シート名を選択した状態で、▶︎(実行ボタン)をクリック
コピー元のシート名入力ボックスが表示
コピーしたいシート名を入力し、OKをクリック
選択したシート名分、コピーができました!
⑤エラーの解説
コピー後のシート名が入力されていない時、マクロを実行後に
エラーメッセージが表示されます
また、コピー元のシート名がない時もエラーメッセージが表示されます
上記のメッセージが表示された時は、セルの選択範囲とシート名を
見直してみてください
まとめ
ここまでお疲れさまでした。
今回はシートをコピー&リネームするマクロについて説明させていただきました。
繰り返し作業はマクロの得意分野なので、これ自動化できないかなと思ったら、調べてみるのがオススメです!
また、インスタでExcelやWindowsの便利術を紹介しているので、
マクロについてコメントやDMをいただけると嬉しいです!