← コード一覧へ戻る
実務シート

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

図で見るファイルの変化

イメージ図

コードに沿った概念図です。実際の画面や実行結果ではありません。

  1. 変更前

    元ブック内に「練習」シートがある

  2. 手動:保存先と確認

    初期候補「練習シート.xlsm」で保存先を選び、コピー保存に同意

  3. マクロ:複製

    「練習」だけを新規ブックへコピー

  4. 変更後

    元の「練習」は残り、新規ブックを選択した.xlsm名で保存

最初の保存先ダイアログのキャンセル・.xlsm以外・コピー確認の[いいえ]ならコピー前に終了します。同名ファイルがあると保存時に上書き確認が出る場合があります。そこで中止したり保存に失敗した場合、コピー済みの未保存ブックが開いたままになることがあります。標準モジュールはコピーされず、元ブックへの数式リンクが残る場合があります。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する3つの手順で、コードの使い方を確認できます
  1. 1

    練習用のブックをExcelマクロ有効ブック(.xlsm)で保存します。シート名を「練習」に変更します。

  2. 2

    Alt+F11でVBEを開き、[挿入]→[標準モジュール]にコードを貼り付けます。

  3. 3

    Sample3074内にカーソルを置いてF5で実行します。練習シートだけを新規ブックにコピーし、別ファイルで保存します。

使っている機能の公式ドキュメント(Microsoft Learn)