経緯
Excelで作業していると、既存のシートをコピーして再利用したい場面がよくあります。
これまではシートのタブを右クリックして「移動またはコピー」を選び、手動で複製していましたが、この作業が面倒に感じたため、VBAで自動化できないかを検討しました。
そこで今回は、Excel上のボタンをクリックするだけで、現在のシートを複製できるマクロを作成しました。
実現したい仕様
- Excelシート上に「複製」ボタンを配置
- ボタンを押すと、新しいシート名を入力するダイアログボックスが表示される
- 入力された名前で、現在のシートをブックの先頭に複製
- シート名が既存のものと重複していた場合は無視
実装コード(VBAマクロ)
以下が実際に使用しているマクロのコードです。
Sub DuplicateSheetAnd()
Dim newSheetName As String
Dim newSheet As Worksheet
' シート名の入力を求めるダイアログボックスを表示
newSheetName = Application.InputBox("新しいシート名を入力してください:", "シート名入力", Type:=2)
' 入力がキャンセルされた場合は処理を終了
If newSheetName = "False" Then Exit Sub
' 現在のシートを複製し、複製されたシートを変数に格納
ActiveSheet.Copy Before:=ThisWorkbook.Sheets(1)
Set newSheet = ActiveSheet
' 新しいシートに名前を設定
On Error Resume Next ' 既に同じ名前のシートが存在する場合のエラーを無視
newSheet.Name = newSheetName
On Error GoTo 0 ' エラーハンドリングを元に戻す
End Sub
このマクロは、選択中のアクティブシートをそのままコピーして先頭に配置し、指定した名前に変更する仕様です。
ボタンの設置方法(図形ボタン)
このマクロを使うには、以下の手順でボタンを作成してください。
- Excelのリボンから「挿入」→「図形」を選ぶ
- 好きな図形をワークシート上に配置
- 右クリックして「マクロの登録」→「DuplicateSheetAnd」を選択
これで、図形ボタンを押すと、マクロが実行されます。
補足:今後の応用について
今回のようにシートを簡単に複製できる仕組みがあると、業務用のテンプレート作成や日次シートの量産に非常に役立ちます。
私はこのあと、複製するだけでなく、シート内の内容を初期状態に戻す処理なども組み込んで応用しています。
まとめ
- マウス操作を減らし、シート複製をワンクリックで実行可能
- 新しいシート名は毎回入力でき、自由度も高い
- マクロ初心者でも比較的簡単に導入できる内容
業務効率化やテンプレート運用の自動化にも応用できますので、ぜひ一度お試しください。
技術書の購入コストを抑えてスキルアップするなら

ここまで読んでいただきありがとうございます。最後に宣伝をさせてください。
プログラミングの技術書や参考書は、1冊3,000円〜5,000円するものも多く、出費がかさみがちです。Kindle Unlimitedであれば、月額980円で500万冊以上の書籍が読み放題となります。
気になる言語の入門書から、アルゴリズム、基本設計の専門書まで、手元のスマホやPCですぐに参照可能です。現在は「30日間の無料体験」や、対象者限定の「3か月499円プラン」なども実施されています。まずはご自身のアカウントでどのようなオファーが表示されるか確認してみてください。
