[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『シートの削除』(riko)
お世話になります。
135枚のシートがあり、決まったシートを力技で削除し 3枚のシートにしております。 シート名に規則性は無く、ランダムです ただし、枚数は135枚と決まっており 7枚目と56、57枚目以外を削除したいのですが可能でしょうか? 環境は、XP 2003 です。宜しくお願いします。 (riko)
7枚目と56枚目と57枚目を選択した状態で右クリック、シートの移動またはコピーで移動先ブック名コンボボックスから新規ブックを選びOK。 (コピーを作成するにチェックしても、しなくてもいい) こうすると、3枚だけの新規ブックができるので、元のブックは閉じて、この新規ブックを元のブック名で 名前を付けてき保存するのはどうだろうか?
(ぶらっと)
ぶらっとさんの回答をコードにしただけですけれど、マクロの例です。
これを個人マクロにおいておけば、アクティブなブックを3シートにして上書きします。
別名で保存も可能ですので、その際は
newWB.SaveAs savePath
を
newWB.SaveAs Replace(savePath,".xls","_3ws.xls")
のようにすることで、対応可能です。
(Mook)
Sub Save3WSs()
Dim wb As Workbook
Set wb = ActiveWorkbook
If wb.Worksheets.Count <> 135 Then
MsgBox "この処理はシートが135のブックで実行可能です。"
Exit Sub
End If
Dim newWB As Workbook
Dim savePath As String
wb.Sheets(Array(wb.Sheets(7).Name, wb.Sheets(56).Name, wb.Sheets(57).Name)).Copy
Set newWB = ActiveWorkbook
savePath = wb.Path & "\" & wb.Name
wb.Close SaveChanges:=False
newWB.SaveAs savePath
End Sub
名前を付けて保存は問題なく動作しました しかし、135枚の内3枚を残しそのまま上書き保存したいのです。 自分の質問の仕方が悪いので致し方ありませんでした 結果として、全てのシートを元データからコピーしてから始めます そして ブックの名前を、20120824とすると 135枚のシートを開き3枚以外を削除 20120824で上書き保存です。 お忙しいところ申し訳ありません ご教授のほど何とぞ宜しくお願い致します。 20120824 01:18 (riko)
Mookさんの回答コードは、そのとおりになるよ?
ただ、くだんのブックが開かれ、それを最前面に出した状態で実行するというもの。 あと、「ブックの名前を、20120824とすると135枚のシートを開き」という表現が ちょっと気になるね。開くのは「ブック」で、シートは、そのブックの中に存在しているだけなので。
(ぶらっと)
もしかしたら、マクロの設定の仕方がわからないのでしょうか。
一例ですが、 ツール⇒マクロ⇒新しいマクロの記録 保存先に「個人用マクロブック」を指定し、そのまま停止ボタンを押す。 http://koikide.net/kiroku.html
Alt+F8 で「Macro1」を選んで「編集」をクリック。 開いた Sub Macro1() 〜 End Sub を全部消して、 代わりに上の Sub Save3WSs() 〜 End Sub を貼り付け。
Excel に戻って、135シートあるファイルを開いて、Alt+F8 のマクロの実行から、 Save3WSs を選んで実行です。 Alt+F8 のオプションでショートカットキーを設定すれば、直接実行もできます。 (Mook)
追記: 編集で開かない場合は、EXCEL から Alt+F11 で開いたウィンドウで PERSONAL.XLS(2003の場合) の下の 標準モジュール、ModuleXX(XXは数字)を選ぶ。 や Macro1 を選んで、ステップインをクリックして、開いたウィンドウで 「実行」⇒「リセット」をクリックしてから、作業をする。 といった方法で試してみてください。
(Mook)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.