A子さん複数あるシートのうち、特定の1枚だけを保存したい
別ファイルとして自動保存したいが、手作業だと面倒
VBAで「名前を付けて保存」ってどう書くの?
結論:1行ずつ丁寧に書けば簡単に実装できます



VBAを使えば、特定のシートだけを抜き出して、別のExcelファイルとして保存することができます。
「日報」や「請求書」「申請書」など、テンプレートの一部だけを他部署に共有したいときにも活躍します。
目次
使用する想定シーンと目的
例えばこんな業務があったとします:
- 月次報告書ブック(複数シート)から「営業部」シートだけを提出用に保存したい
- 元ファイルは残したまま、営業部シートだけ別ブック化したい
- 保存先やファイル名もある程度自動化したい
このようなシーンに対応できるのが、以下で紹介するVBAです。
シートをコピーして新規ブックとして保存するVBAコード
Sub シートを別ブックとして保存()
Dim 保存対象 As Worksheet
Dim 保存ブック As Workbook
Dim 保存先パス As String
Dim ファイル名 As String
' 保存対象のシート名(例:営業部)
Set 保存対象 = ThisWorkbook.Sheets("営業部")
' シートをコピーして新しいブックに
保存対象.Copy
' コピーされたブックを変数に設定
Set 保存ブック = ActiveWorkbook
' 保存先パスとファイル名の設定
保存先パス = ThisWorkbook.Path & "\"
ファイル名 = "営業部_" & Format(Date, "yyyymmdd") & ".xlsx"
' 保存
保存ブック.SaveAs Filename:=保存先パス & ファイル名, FileFormat:=xlOpenXMLWorkbook
' ブックを閉じる(保存済みなので変更確認は不要)
保存ブック.Close SaveChanges:=False
MsgBox "営業部シートを保存しました!", vbInformation
End Sub



最大のメリットは開発者の考えた「ブックの名前ルールが100%反映」されることです。
保存時にファイル名を自動で指定する方法
上記のコードでは Format(Date, "yyyymmdd") によって今日の日付入りのファイル名が自動生成されます。
ファイル名 = "営業部_" & Format(Date, "yyyymmdd") & ".xlsx"



📌 組織内での「保存ミス」や「名前重複」を防ぐ工夫として有効です。
上書き保存を防ぐ工夫
すでに同じ名前のファイルが存在する場合、上書きしてしまうと困ることもあります。
その場合は、以下のように存在チェックを追加することも可能です。
If Dir(保存先パス & ファイル名) <> "" Then
MsgBox "同じ名前のファイルがすでに存在します。", vbExclamation
Exit Sub
End If
保存後に元ブックへ戻る処理の追加
実行中は「保存先ブック」がアクティブになっていますが、保存後に元のブックに戻りたい場合は、事前にThisWorkbookをアクティブに戻す処理を追加します。
ThisWorkbook.Activate
また、複数シートのコピーや、複数ファイルへの分割などにも応用できます。
まとめと応用例
「.Copy」で特定シートを別ブック化できる
「SaveAs」でファイル名と保存場所を指定可能
「Format」関数でファイル名に日付を含めると管理が楽
上書き防止や戻り処理も一緒に書くとより実用的に

コメント