• ベストアンサー

シートをコピー、シート名を変更

Windows8でExcel2000を使っています。 こういうマクロはどう書けばいいんでしょうか? 同一ファイル内で、シートを複数枚コピー。 複数選択したセルに入力された文字列を、上記でコピーされたシート名に反映したい。 「原本」というシート名のシートがあり、それを元に一年分の表を作りたいのですが 今は手で11枚コピーを作った後1枚ずつ名前変更でやっています。 シート名にしたい文字列は現在なら「2015年01月」~「2015年12月」です。 セルに「2015年01月」~「2015年12月」を入力、選択した後マクロ実行で シート名変更に反映できればありがたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.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 >入力、選択した後マクロ実行でシート名変更に反映 記入した内容が「シート名として適切ではない」場合(たとえば同じ名前のシートが既にある等を含む)の処置について考慮されていませんね。 必要に応じて自力で適切に工夫してみて下さい。

hn39
質問者

お礼

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

関連するQ&A