- ベストアンサー
EXCELで複数のBookにマクロを使用して転記する方法
Book1にSheetが5つ(Sheet名 あ、い、う、え、お)あります。 このSheetをマクロを使用して、それぞれ5つの別のBookにそのSheet名をつけて、 元と同じ名前のSheet名で保存する方法を教えて下さい。 コピー元 Book1 コピー先 Book名 あ Sheet名 あ.xls Book名 い Sheet名 い.xls Book名 う Sheet名 う.xls Book名 え Sheet名 え.xls Book名 お Sheet名 お.xls
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
kenchandesuさん、こんにちは。 #1のmerlionXXです。 > あらかじめ作ってある5つの別のフォルダー(あ、い、う、え、お)に > 5つの別のBookを作るようにお願いします。 そういうことは最初からはっきり書くものです。 作ってある5つのフォルダー名と、そこにいれるBOOK名とシート名は一致しているんですね? そのフォルダーのパスを書いてくれないと、こちらではわからないと思いません? 仮に、C:\Documents and Settings\ユーザー名\My Documents のなかに作ってあるとすれば、下記のようになります。ただし、ユーザー名のところは自分のに直してくださいね。 Sub TEST2() Dim st As Worksheet For Each st In ThisWorkbook.Worksheets st.Copy ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\ユーザー名\My Documents\" & st.Name & "\" & st.Name & ".xls" ActiveWindow.Close Next End Sub
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
#1で既にご回答がありますが、 コードや方法を考え付く考え方として、下記があります。 ーー Book1を開く ツールーマクロー新しいマクロの記録ーMacro1-OK シートタブ部で右クリック 「移動またはコピー」を選ぶ (移動先ブック名)の▼をクリックして「新しいブック」を選ぶ。 「コピーを作成するにチェックを入れる。 OK Book2ができて、その中のSheet1がアクチブになっている。 ファイルー名前をつけて保存ー名前を指定してーOK 上記をしてマクロの記録を終了する。 マクロの記録は Sheets("Sheet1").Select Sheets("Sheet1").Copy ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\xxx\My Documents\Sheet2あ.xls" (以下省略した) 上記処理のコードを、ブックの中にあるシートを順次捉える For Each Sh In Worksheets (上記処理) Next で処理を囲むコードにする。 各シートを捉えて、上記の処理を、シート全部について行うコードができる。 ーーー 新ブック名を変化させるのは、新ブック名を配列にでも入れるか、 ー>Bname(i)とでも指定すればよい Book1のSheet1のセルにでもいれて参照 ブック名.Worksheets("Sheet1").Cells(i,"K") すればよいと思う。 。
お礼
返事が遅くなり申し訳ありませんでした。 うまくいきました。 ありがとうございました!
- merlionXX
- ベストアンサー率48% (1930/4007)
こんな感じでしょうか (⌒o⌒)? Sub TEST() Dim pth As String, st As Worksheet pth = ThisWorkbook.Path For Each st In ThisWorkbook.Worksheets st.Copy ActiveWorkbook.SaveAs Filename:=pth & "\" & st.Name & ".xls" ActiveWindow.Close (False) Next End Sub
お礼
お礼が遅くなり申し訳ありませんでした。 うまくできました!
補足
早速のご回答ありがとうございます。 質問内容が不適切でしたので修正します。 それぞれ5つの別のBookに→それぞれ5つの別のフォルダーに Book名 →フォルダー名 元のBOOK1も、5つのBOOKも同じフォルダーに出来てしまいました。 あらかじめ作ってある5つの別のフォルダー(あ、い、う、え、お)に 5つの別のBookを作るようにお願いします。
お礼
返事が遅くなり、また、2回も質問し、申し訳ありませんでした。 うまくいきました。 ありがとうございました!