- 締切済み
シートの自動追加を新規ブックで実行したい
こんばんは。 いつもお世話になっています。 営業月報を作成したいと思い、色々お知恵を借りながら試しています。 Sheet1:チームのメンバー表 Sheet2~3:名簿と目標値 Sheet4:月報の原版 このような構成のブックで、毎月Sheet1のメンバー表を書き換え(名簿ファイルから直接コピペでA1セルから下に向かってメンバーの名前)、 下記のマクロを実行してSheet4を複製しています。 今はこの追加を同じブック内で最後尾へどんどん追加しているのですが、複数のチームで共有する都合を考え、Sheet1にコピペしたメンバーの月報は新規ブックを自動で起こしてシートを追加したいと思っています。 ******************************* Sub シート追加() Dim 追加シート名 As String Dim i As Integer For i = 1 To Sheets("Sheet1").Range("a1").End(xlDown).Row 追加シート名 = Sheets("Sheet1").Cells(i, 1).Value Sheets("Sheet4").Copy After:=Sheets(Sheets.Count) Sheets("Sheet4" & " (2)").Name = 追加シート名 Next End Sub ******************************* 現在使用しているマクロはこのような内容なのですが、新規ブックでシートの追加をするには、どのようにすればよいのでしょうか? よろしく御教示をお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 開発の立場からすると、順序立てる、というか、組み立てから考えないと、ここの掲示板では、話が途中手で頓挫しそうな気がします。 ある程度、コードを作っていない状態だと、私は、申し訳ないのですが、今の段階では手が付けられそうにもないですね。もうシステムになっているようです。 まず、ブックを探すところから始まりませんか? ブックがあったら、そこにメンバーのシートを入れていく。 ブックがなかったら、ブックを作って、メンバーのシートを入れていく。 2番目のメンバーは、そのブックの前のメンバーの次に入れていく。 など、きちんとした分岐を作らないと出来ません。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 >新規ブックでシートの追加 というなら、単に、Sheet コピーすればよいです。 例: Worksheets("Sheet4").Copy で、新規のブックが作られます。 だから、 >Sheet1にコピペしたメンバーの月報は新規ブックを自動で起こしてシートを追加したいと思っています。 正確には、Sheetをコピーする場合は、シートを追加しているわけではありませんが。 ループしていますから、既に複製を作ったものは省かなくてはならないように思います。それを、どのように対処するのか、質問の中だけでは分かりません。同じブック内なら、省く方法はあります。 それから、シート名は変更できても、ブック名はどうするのでしょうか? キメウチでコードを書くというわけにはいきませんしね。
お礼
回答ありがとうございます。 なるほど。 シートの重複、ブック名については考えが及びませんでした。 チームのメンバー表に使うSheet1のA列がメンバー名なので、B列にチーム名を入れたいと思います。ブック名はB1のセルということになります。 重複については、各チームごとに新規ブックで保存という方法で作りたいと思っていますが、月内でチームを変わる場合もありますので、既に作成した人間であっても実行毎に作成が可能にしたいと思っています。 よろしくおねがいします。
- xls88
- ベストアンサー率56% (669/1189)
Sheet4のシート見出しを右クリック>移動またはコピー>コピーを作成>新しいブック>OK>名前を付けて保存 といった一連の作業を「マクロの記録」すればどうでしょうか。 Excel2007ですが、下記のようなコードが得られました。 Sheets("Sheet4").Copy ActiveWorkbook.SaveAs Filename:="D:\月報\月報ABC.xlsx", _ FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
お礼
早速の回答ありがとうございます。 説明が足りず、すいませんでした。 各Sheet間で下記のような動きをして、シートを自動コピーしています。 (1)まずSheet2の名簿からチームメンバー(毎月変わります)の名前をSheet1のA1から下に向かって(A2、A3・・・)コピペします (2)Sheet1のメンバー表には(1)を実行すれば、自動的にSheet3から目標値を拾って出勤シフトに合わせた目標を計算するよう式を入れています。 ※これが月報の数字となります。 (3)ここでマクロを実行(シート追加) (4)マクロによって、Sheet1のA列にあるメンバーの人数分のシートが同じブック内に自動で追加され、シート名はそのメンバーの個人名になります。月報の原板に入れた数式があるので(2)の個人別目標も自動で入ります。 このような流れです。 メンバーは流動的です。毎月変わります。1チームの人数制限はありません。チーム数も商品の種類と規模に合わせて多少・大小様々になるため、Sheet1~4が保存されているブックではなく、新しいブックでチームごとに保存したいと思い相談しました。 どうぞよろしくおねがいします。
お礼
遅くなりました。 すいません、アドバイスを頂きましたが私の説明が足りないようです。 もう少し勉強して、分からない場合は質問を投稿します。 ありがとうございました。