- ベストアンサー
Excel VBA 特定の複数のシートのみ保存する方法
VBAで1つのシートを保存する方法やブックを保存するはわかるのですが 「不要なシートを除いて、他全てのシートをひとつのブックとして保存」する方法がわかりません。 わかる方教えてください。 ▼作業の流れ▼ 【1】操作するシートである計算を行います。 ※現在のシートは1つとします。 「操作」シート 【2】計算結果はシートが追加され各シートに移動されます。 (1)シート、(2)シート・・・と(最大は20まで) 【3】各シートに割り振られたら(「操作」シートを除いて)名前をつけて保存します。 ※現在のシートは4つあるとします。 「操作」シート 「(1)」シート 「(2)」シート 「(3)」シート (1)、(2)、(3)の3つシートだけを「名前を付けて保存」をしたいと考えています。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
「操作」シート の位置が特定できなかったので面倒な書き方になりましたが、「操作」という名前のシート以外を別名保存させる一例です。 Sub test01() Worksheets(Worksheets.Count).Select If ActiveSheet.Name = "操作" Then Worksheets(Worksheets.Count - 1).Select End If For Each ws In ThisWorkbook.Worksheets If ws.Name <> "操作" Then ws.Select (False) End If Next ActiveWindow.SelectedSheets.Copy Application.Dialogs(xlDialogSaveAs).Show End Sub
その他の回答 (3)
- WWolf
- ベストアンサー率26% (51/192)
こんにちは。 こんなかんじでどうですか? Sub test1() chk = 0 With ThisWorkbook OWN = .Name If .Worksheets.Count <> 1 Then For Each ws In .Worksheets If ws.Name <> "操作" Then ws.Select (False) chk = 1 End If Next If chk = 1 Then ActiveWindow.SelectedSheets.Copy NWBN = Application.Dialogs(xlDialogSaveAs).Show If NWBN = True Then ActiveWorkbook.Close False Workbooks(OWN).Activate Application.DisplayAlerts = False ActiveWindow.SelectedSheets.Delete Application.DisplayAlerts = True End If End If End If End With End Sub
お礼
ご回答有難うございます。 上記のプログラムですと、「ブックのシートをすべて削除または非表示にすることはできません。」とエラーが出てしまいましたが大変参考になりました。どうも有難うございました。
- nag0720
- ベストアンサー率58% (1093/1860)
次の手順で実行すればどうですか。 ・現在のブックを上書き保存する。 ・保存したブックのファイル名を変更する(NAMEコマンド)。 ・変更したブックを読み込む。 ・不要シートを削除する。 ・ブックを保存して閉じる。 こうすれば、マクロを実行しているブックとシートを削除するブックは違いますから止まることはないと思います。
お礼
回答有難うございます。 上記手順を見て、なるほどーと思いました。 ※確かに私が見た複数保存機能は上記のような手順で動いていた感じでした。 (別のブックが一瞬表示させる謎がわかりました。) 複数保存のカラクリはこういう風になっているんですね 大変参考になりました。
- chie65536(@chie65535)
- ベストアンサー率44% (8742/19840)
「操作」シートを削除してから、ブックを「名前を付けて保存」で新規のブックに保存すればよい。
補足
ご回答有難うございます。 上記の方法は自分も考えてみたのですが、「操作」シートを削除するとプログラムが動作しなくなってしまうのでボツにしています。 他のシートで動かすという手もありますが「操作」シートを削除されて「保存」をキャンセルした場合「操作」シートが消えているマズイので他の方法を探しています。 偶にVBAで特定のシートを複数 保存するのを見かけますが、操作を行う不要なシートは削除しているんでしょうかね? ※正常に保存されたら、ちゃんと元の状態になっています。(削除した気配がありません) どのようなカラクリで保存しているのか全くわかりません。
お礼
上記プログラムをそのままコピペしただけで出来ました。 親切に有難うございました。