ブックに名前を付けて保存する

新規作成したブックや、既存ブックに別の名前を付けて保存するには、WorkbookオブジェクトのSaveAsメソッドを利用します。

SaveAsメソッドで保存すると、ブックの内容が保存されるだけでなく、そのブックの更新日時がSaveAsメソッド実行時の日時が設定されるなど、Excelで名前を付けて保存したときと同様の動作になります。

なお、上書き保存を行いたい場合は「VBAでブックを上書き保存する(Save)」をご参照ください。

同名のブックが既にある場合

保存先のフォルダに同じ名前のブックがある場合は上書き確認ダイアログが表示されます。また、そのブックが開いている場合は上書きできないためエラーになります。

作成したブックをどのように扱うかは、状況によって変わります。最優先で保存しなければならない場合もあれば、既存ブックを残さないといけない場合など、何を優先していくかを決めておく必要があります。それらの方法については以下のリンクをご参照ください。

構文

Sub Workbook.SaveAs([Filename], [FileFormat], [Password], [WriteResPassword], [ReadOnlyRecommended], [CreateBackup], [AccessMode As XlSaveAsAccessMode = xlNoChange], [ConflictResolution], [AddToMru], [TextCodepage], [TextVisualLayout], [Local], [WorkIdentity])

引数がたくさんありますが、通常は1番目のFilename(ブックのフルパスを推奨)だけ指定すればOKです。

親オブジェクト 保存対象ブックのWorkbookオブジェクトを指定します。
Filename
(省略可だがフルパス推奨
ブックに付ける名前を指定します。フルパスの指定を推奨します。ブック名を変えずに保存先フォルダを変更したい場合は変更先のパスと元のブック名でのフルパスを指定します。

未設定時はカレントフォルダに元のファイル名で保存されますが、その場合はそもそもSaveAsメソッドを使う意味(名前を付けて保存する意味)が無いため、通常は指定します。新規ブックの場合に未設定の場合はカレントフォルダに「Book1.xlsx」のような名前で保存されます。

FileFormat
(省略可)
xlsxやxlsmなどのファイル形式をXlFileFormat列挙型の定数で指定します。XlFileFormat列挙型は50以上の定義がありますが、実際に使う定義はxlsxのxlOpenXMLWorkbookかxlsmのxlOpenXMLWorkbookMacroEnabledがほとんどです。

XlFileFormat列挙型(よく使うもののみ記載)

定数 内容
xlWorkbookDefault(省略時) 51 既定ブック(通常は.xlsx)
xlOpenXMLWorkbook 51 Excelブック(.xlsx)
xlOpenXMLWorkbookMacroEnabled 52 マクロブック(.xlsm)
Password
(省略可)
保護パスワードを15文字以内で指定します。大文字と小文字は区別されます。
WriteResPassword
(省略可)
書き込みパスワードを指定します。書き込みパスワードが指定されている場合は、そのブックを開く際にパスワードの入力が要求されます。正しい書き込みパスワードを入力しなかった場合は読み取り専用でブックは開きます。設定済みの書き込みパスワードを解除する場合は空文字列を設定して保存します。
ReadOnlyRecommended
(省略可)
読み取り専用の推奨を設定する場合はTrueを指定します。省略時はFalseの扱いになります。
CreateBackup
(省略可)
バックアップファイルを作成する場合はTrueを指定します。省略時はFalseの扱いになります。
AccessMode
(省略可)
ファイルのアクセス方法をXlSaveAsAccessMode列挙型の定数で指定します。

XlSaveAsAccessMode列挙型

定数 内容
xlExclusive 3 排他モード
xlNoChange(省略時) 1 変更なし
xlShared 2 共有モード
ConflictResolution
(省略可)
共有ブックを開いている場合で、他者による変更が自分の変更と競合した場合に自分が開いた共有ブックへどのように反映させるかをXlSaveConflictResolution列挙型の定数で指定します。

XlSaveConflictResolution列挙型

定数 内容
xlLocalSessionChanges 2 自分の変更を反映する
xlOtherSessionChanges 3 「競合の解決」ダイアログを表示して選択を行うようにする
xlUserResolution(省略時) 1 他のユーザーの変更を反映する
AddToMru
(省略可)
最近使用したブックの一覧に追加する場合はTrueを指定します。省略時はFalseの扱いになります。
TextCodepage
(省略可)
使いません。設定しても無視されます。
TextVisualLayout
(省略可)
使いません。設定しても無視されます。
Local
(省略可)
Excelの言語設定に合わせた形式で保存する場合はTrueを指定します。VBAの言語設定に合わせる場合はFalseを指定します。省略時はFalseの扱いになります。
WorkIdentity
(省略可)
不明。

サンプルコード

コード1:既にあるブックを開いて別名で保存する

以下のコードは、既に存在するブックを開いて、別名で保存します。

ブックを開くにはWorkbooks.Openメソッドを使います。詳細は「VBAでExcelブックを開く方法(Workbooks.Open)」をご参照ください。

コード1:ブックを新規作成して名前を付けて保存する

以下のコードは、ブックを新規作成して名前を付けて保存します。

ブックの新規作成はAddメソッドを利用します。Addメソッドについての詳細は「VBAでブックの新規作成を行う(Workbooks.Add)」をご参照ください。