CopySheets|指定シートを安全に一括複製(シートコピー) | Excel VBA
- yuji fukami
- 2024年12月28日
- 読了時間: 2分
更新日:1月4日

<概要 (シート 複製 コピー VBA)>
CopySheetsは、指定したワークシートを任意の個数だけ自動で複製するためのExcel VBA汎用プロシージャです(シート 複製 コピー VBA)。
シートの複製ーの用途としては以下のようなものがあります。
・日報入力を日付別に入力する場合に、原本のシートから指定の年月のその月における日数分のシートを作成する。
・特定の月の日数同様、一年分の入力を行う場合に12ヶ月分の空っぽの原本シートを複製する。
既に複製済みのシートが存在する場合は事前に削除され、常にクリーンな状態で再生成される点が大きな特長です。
また、原本シートが非表示であっても正しく動作し、処理中はステータスバーに進捗状況を表示できます。
「Excelでテンプレートシートを大量生成したい」「毎回手作業でシートをコピーするのが面倒」といった業務において、
CopySheetsは再利用性・保守性ともに高い“穴場系”VBA部品として活躍します。
<実行例>
実行例におけるサンプルのコードは下記の通りです。
これを実行するにあたって、事前準備としてコピーするシートのシートオブジェクトの名前を「Sh01_原本」でも設定しておきます。

この状態で先ほどのサンプルのコードを実行すると、原本シートが合計10個作成されているのが確認できます。コピーした後のシートの名前は第3引数で与えてTemplateSheetNameにアンダーバーを付けて数字の連番を与えたような名前になります。


ちなみに、サンプルのコードをもう一度実行すると、先ほど一度コピーされた原本のシートが一度消去されて新たにコピーし直すという処理もできるようになっており、再度実行する前の事前処理等は不要になっております。
ちなみに、イミディエイトウィンドウおよびステータスバーにもその進行状況が表示されているので、これは実際に実行して目視で確認してみてください。
また。この汎用プロシージャ「CopySheets」には、以前に紹介した進行状況をステータスバーに表示する汎用プロシージャである「ShowStatusBarProgress」も利用しています。
<関連記事>
今回紹介しているような汎用プロシージャを部品として一元管理する方法は別記事で紹介していますので、是非このノウハウも参考にしてみてください。
コーディングを効率化する上でどんどん増やしていった汎用プロシージャ(部品)をいくら増やしても簡単に流用ができるような仕組みの構築が可能になります。



