- ベストアンサー
シートをコピー、シート名を変更
Windows8でExcel2000を使っています。 こういうマクロはどう書けばいいんでしょうか? 同一ファイル内で、シートを複数枚コピー。 複数選択したセルに入力された文字列を、上記でコピーされたシート名に反映したい。 「原本」というシート名のシートがあり、それを元に一年分の表を作りたいのですが 今は手で11枚コピーを作った後1枚ずつ名前変更でやっています。 シート名にしたい文字列は現在なら「2015年01月」~「2015年12月」です。 セルに「2015年01月」~「2015年12月」を入力、選択した後マクロ実行で シート名変更に反映できればありがたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ふつーに、必要な数だけシートのコピーと名前付けを繰り返すだけです。 sub macro1() dim h as range on error resume next for each h in selection worksheets("原本").copy after:=worksheets(worksheets.count) activesheet.name = h.value next end sub >入力、選択した後マクロ実行でシート名変更に反映 記入した内容が「シート名として適切ではない」場合(たとえば同じ名前のシートが既にある等を含む)の処置について考慮されていませんね。 必要に応じて自力で適切に工夫してみて下さい。
お礼
keithinさん、ありがとうございます。 書いていただいたマクロを登録しましたらコピーしてくれました。 自分でもやってみたのですが、複数選択したセルに入力された文字を シート名にすることはいろいろ考えてみたいと思います。 Sheets("原本 (2)").Name = "2015年01月" この部分の"2015年01月"などのところを絶対値で指定できれば、とか考えています。 Sub Macro1() Sheets("原本").Select Sheets("原本").Copy Before:=Sheets(1) Sheets("原本").Select Sheets("原本").Copy Before:=Sheets(1) Selection.Copy Sheets("原本 (2)").Select Sheets("原本 (2)").Name = "2015年01月" Range("C3").Select Application.CutCopyMode = False Selection.Copy Sheets("原本 (3)").Select Sheets("原本 (3)").Name = "2015年02月" End Sub