- ベストアンサー
excel 複数のシートを新規ブックに分けて保存
Excel初心者です。 書式の関係上、1つのブックに約10シートを作成しています。 「A(1)」「A(2)」・・・「B(1)」「B(2)」・・・ と2種類のシート名になっています。 これをAのブック、Bのブックと2つに分けたいのですが、どのようにすればよいでしょうか? Worksheets(1).Copy では1つのシートしか新規ブックにできませんし、 Workbooks.Add は要らないシートが出来てしまいます。 よろしくご教授おねがいします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#4です。 > 「myCnt = 0」はなぜあるのですか? > カウントするならなくても良いのでは?と思いました。 Selectメソッドのヘルプを引用すると # Select(Replace) # # Replace # 選択位置を指定したオブジェクトのみを選択するには、True を指定します。 # 既に選択されていたオブジェクトと指定したオブジェクトを選択するには、False を指定します。 ws.Select True → ws.Select myCnt = 0 で代用しています。 myCnt = 0 なら True です。 一番最初に見つけた「A*」で始まるシートは True じゃないと、開始時点で選択していたシートも付いてきてしまいますので、これが無いと期待する結果になりません。 例えばこの引数をつけない場合、 A(1),A(2),A(3),B(1),B(2),B(3) という構成で「B(3)」で始まるシートが選択された状態でマクロが実行されると A(1),A(2),A(3),B(3) が移動されてしまいます。
その他の回答 (4)
- papayuka
- ベストアンサー率45% (1388/3066)
「A」で始まるシート名を別ブックに移動させます。 シート枚数が可変でも大丈夫だと思います。 Sub Test() Dim ws As Worksheet, myCnt As Integer myWord = "A*" myCnt = 0 For Each ws In ActiveWorkbook.Worksheets If ws.Name Like myWord Then ws.Select myCnt = 0 myCnt = myCnt + 1 End If Next ws If myCnt > 0 Then ActiveWindow.SelectedSheets.Move End Sub
お礼
ありがとうござます。 希望する結果が得られました。 本題から逸れますが、1点疑問があります。 If ws.Name Like myWord Then ws.Select myCnt = 0 myCnt = myCnt + 1 End If の「myCnt = 0」はなぜあるのですか? カウントするならなくても良いのでは?と思いました。 当方のVBAの勉強の為、お教えいただければと思います。
- WWolf
- ベストアンサー率26% (51/192)
こんにちは 何も考えず単純にしましたが、参考までに・・・ 保存については追加してください '以下のコードは種類が2つで且つ5シートずつに分かれていると仮定 Sub test() Dim OwnBN WBC = Workbooks.Count If WBC <> 1 Then MsgBox "振り分けたいブック以外は閉じてください" Exit Sub End If OwnBN = ActiveWorkbook.Name Sheets(Array("A(1)", "A(2)", "A(3)", "A(4)", "A(5)")).Select Sheets(Array("A(1)", "A(2)", "A(3)", "A(4)", "A(5)")).Copy NewBN = ActiveWorkbook.Name ActiveWorkbook.Windows(NewBN).Caption = "Aタイプ" Windows(OwnBN).Activate Sheets(Array("B(1)", "B(2)", "B(3)", "B(4)", "B(5)")).Select Sheets(Array("B(1)", "B(2)", "B(3)", "B(4)", "B(5)")).Copy NewBN = ActiveWorkbook.Name ActiveWorkbook.Windows(NewBN).Caption = "Bタイプ" Windows(OwnBN).Activate End Sub
お礼
ありがとうございました。 しかし、シート数は固定ではないので Arrayは使えないんです・・・。 当方の言葉足らずで申し訳ありません。
- hayasi456
- ベストアンサー率40% (2402/5878)
ABあるブックを開きます。 「A」のシートのみ「Shift」キーを押しながら選択します。 選択したシート名の適当な位置で右クリックし「移動またはコピー」を選びます。 「移動先のブック名」で(新しいブック)を選び「OK」をクリックします。 新しく出来たブックを「名前を付けて保存」して下さい。
お礼
ありがとうございました。 当方の言葉足らずで申し訳ないですが、 VBAに関する質問でした。
- gundai44
- ベストアンサー率33% (43/129)
ShiftかCtrlを押しながら対象のシートをクリックすると複数選択できます。 その状態でコピーすると全部できますよ。
お礼
ありがとうございました。 当方の言葉足らずで申し訳ないですが、 VBAに関する質問でした。
お礼
ありがとうございます。 1枚目を調べる時には、myCnt = 0ですので、ws.Select True となり、 2枚目以降を調べる時は、myCnt = 1ですから、ws.Select False となるわけですね。 大変勉強になりました。 ありがとうございました。