- ベストアンサー
シート作成毎の削除方法
30枚シートを作成し5シート毎に新規ブックで保存をし、アクティブシートに新規で保存した分は 削除し、新たに5シート毎に新規ブックで保存し。。を繰り替えし30枚シートを6ブックに分けたいのですが うまくいきません。 初めにインデックスを作成しているのでワークシートa以降から5シート毎に削除したいのですが・・ 下記のプログラムをループの中に入れて実行させたいのですが、'★からの命令でaシート以降5シート毎に削除 したいのですが削除すらできません。。 何かアドバイスがありましたらお願い致します。 list_cnt = list_cnt + 1 If list_cnt = 5 Then ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "【●●】分析資料.xls" ’★ ActiveWorkbook.Worksheets.Delete After:=Worksheets("a") End If
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
後ろから5枚ずつを5つのブックに分けます。 ⇒残った5枚を移動させるの・・・? Sub try() Dim i As Integer, j As Integer Dim v(4) As Variant Application.ScreenUpdating = False For i = 5 To 1 Step -1 For j = 0 To 4 v(j) = i * 5 + (j + 1) Next ThisWorkbook.Worksheets(v).Move ActiveWorkbook.Close True, Filename:=ThisWorkbook.Path & "\○○_" & i & ".xls" Next Application.ScreenUpdating = True End Sub 一旦配列変数:vにシートインデックスNoを代入し5枚毎にMove(移動)させ、 新しいブックに重複しないようファイル名を変えながら保存してます。 ご参考になれば。
その他の回答 (3)
- n-jun
- ベストアンサー率33% (959/2873)
n-junです。 >30枚シートを作成し5シート毎に新規ブックで保存をし、 #2のコードは”30シート出来ている”状態の物ですので、作成からであれば ・・・ちょっと的はずれかも。
- imogasi
- ベストアンサー率27% (4737/17069)
5シートはどういう風に決定するのか、しっかり書かないと、解答しようが無い。 (1)シートタブの左から見えている順 シートの「インデックス番号の1-5、6-10、・・ ということになる。 (2)シートの名前がa1,a2,a3,a4,a5,b1,b2,b3,b4,b5・・・ などと在って、aのシート5つ、bのシート5つという風にまとめるのか。この場合、サブ番号数字の判別など結構複雑と思う。 (3)その他のまとめ方か ーー 削除については この質問の5ブックに5シートずつ保存して、1つのシートを残し(エクセルでは1つは必要)他を削除してはダメですか。 下記は削除する処理のみ Sub test01() Application.DisplayAlerts = False Sheets.Add For i = 2 To Sheets.Count Sheets(2).Delete Next i Application.DisplayAlerts = True End Sub ーー 質問の重点が シートの5シートづつ分割にあるのか シートの削除にあるのか はっきりしない。 --- >初めにインデックスを作成しているのでワークシートa以降から5シート毎に削除したいのですが・ >インデックスを作成しているので >a の意味もわかりにくい。突然aとは何。
- fujillin
- ベストアンサー率61% (1594/2576)
ワークシートの後ろから5シートを削除したいのですよね? Application.DisplayAlerts = False For i = 1 To 5 ActiveWorkbook.Worksheets(Worksheets.Count).Delete Next i Application.DisplayAlerts = True とかではどうでしょうか? (まとめて指定して消去するのもありだろうけど、同じようなものなので…) なお、直接の御質問内容ではありませんが、 Filename:=ThisWorkbook.Path & "【●●】分析資料.xls" は、思ったとおりのパス(ファイル名)になっていますか? (\をつけなくてもいいのかな?) …というか、毎回同じ名前で上書きしてたりしませんか?