1 枚のワークシートだけ別ブックで保存する
練習シートだけを新規ブックにコピーし、別ファイルで保存します。
実行前に確認
- シートのイベントコードを保持するためxlsmで保存します。元ブックの標準モジュールはコピーされません。数式に元ブックへのリンクが残る場合があります。
1サンプルコード
Sub Sample3074()
Dim wb As Workbook, p As Variant
p = Application.GetSaveAsFilename("練習シート.xlsm", "Excel Macro-Enabled (*.xlsm),*.xlsm")
If VarType(p) = vbBoolean Then Exit Sub
If LCase$(Right$(CStr(p), 5)) <> ".xlsm" Then
MsgBox "拡張子は.xlsmを指定してください。": Exit Sub
End If
If MsgBox("練習シートを別ブックにコピーして保存しますか?", vbYesNo + vbQuestion) <> vbYes Then Exit Sub
ThisWorkbook.Worksheets("練習").Copy
Set wb = ActiveWorkbook
wb.SaveAs Filename:=CStr(p), FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub図で見るファイルの変化
イメージ図コードに沿った概念図です。実際の画面や実行結果ではありません。
変更前
元ブック内に「練習」シートがある
手動:保存先と確認
初期候補「練習シート.xlsm」で保存先を選び、コピー保存に同意
マクロ:複製
「練習」だけを新規ブックへコピー
変更後
元の「練習」は残り、新規ブックを選択した.xlsm名で保存
最初の保存先ダイアログのキャンセル・.xlsm以外・コピー確認の[いいえ]ならコピー前に終了します。同名ファイルがあると保存時に上書き確認が出る場合があります。そこで中止したり保存に失敗した場合、コピー済みの未保存ブックが開いたままになることがあります。標準モジュールはコピーされず、元ブックへの数式リンクが残る場合があります。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する3つの手順で、コードの使い方を確認できます
- 1
練習用のブックをExcelマクロ有効ブック(.xlsm)で保存します。シート名を「練習」に変更します。
- 2
Alt+F11でVBEを開き、[挿入]→[標準モジュール]にコードを貼り付けます。
- 3
Sample3074内にカーソルを置いてF5で実行します。練習シートだけを新規ブックにコピーし、別ファイルで保存します。