回答編集履歴

1 しゅうせい

jawa

jawa score 2923

2018/01/29 17:17  投稿

テンプレートって?
---
「テンプレートに直接書き込む」ということ自体に抵抗を感じるので、私もttyp03さんの考え方の方がしっくりきます。
テンプレートとは、もともとそのために用意するものではないでしょうか。
せっかくテンプレートを用意しているのに、直接書き込んでテンプレートとしては使えなくなってしまうから、書き換える前に退避しておくって、ちょっと無駄を感じます。
テンプレートは参照するだけ
---
「テンプレートを変更しない」方針で考えると、以下のような処理になると思います。
1、出力用シートを作成する
2、テンプレートシートの内容を出力用シートにコピーする(出力シートの初期化処理)
3、出力用シートのデータを編集(ここの処理ではいろいろやっていますが、割愛)
4、出力用シートを別Bookに出力
5、出力用シートを初期化する(つまり2に戻る)
テンプレートシートの内容は終始参照されるだけで、変更はしません。
出力シートは毎回作成した方がきれいな状態ではじめられそうですが、速度を懸念されるようなら最初に作ったものを使いまわして、毎回テンプレートからのコピペでリセットだけすればよいと思います。
シートをキレイにするという意味で、対象範囲だけでなく以下のようにシート全体のコピペでまるごとリセットしてしまうのも手です。
```
Dim shTmpl As WorkSheet
Dim shOutput As WorkSheet
Set shTmpl = Sheets("Template")  'テンプレートシート ※シート名は適当
Set shOutput = Sheets("Output")  '出力用シート ※シート名は適当
'シート全体のコピペ
shTmpl.Copy shOutput
```
参考になれば幸いです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る