ブックに名前を付けて保存する
新規作成したブックや、既存ブックに別の名前を付けて保存するには、WorkbookオブジェクトのSaveAsメソッドを利用します。
SaveAsメソッドで保存すると、ブックの内容が保存されるだけでなく、そのブックの更新日時がSaveAsメソッド実行時の日時が設定されるなど、Excelで名前を付けて保存したときと同様の動作になります。
なお、上書き保存を行いたい場合は「VBAでブックを上書き保存する(Save)」をご参照ください。
同名のブックが既にある場合
保存先のフォルダに同じ名前のブックがある場合は上書き確認ダイアログが表示されます。また、そのブックが開いている場合は上書きできないためエラーになります。
作成したブックをどのように扱うかは、状況によって変わります。最優先で保存しなければならない場合もあれば、既存ブックを残さないといけない場合など、何を優先していくかを決めておく必要があります。それらの方法については以下のリンクをご参照ください。
- 既にブックが存在しているかを確認するには「VBAでファイルの存在をチェックする」をご参照ください。
- 上書き確認ダイアログを表示しないようにするには「VBAでエラーダイアログを出さない方法」をご参照ください。
- ブックが開いているかを確認するには「ブックが開かれているかチェックする」をご参照ください。
構文
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列挙型(よく使うもののみ記載)
|
||||||||||||
Password (省略可) |
保護パスワードを15文字以内で指定します。大文字と小文字は区別されます。 | ||||||||||||
WriteResPassword (省略可) |
書き込みパスワードを指定します。書き込みパスワードが指定されている場合は、そのブックを開く際にパスワードの入力が要求されます。正しい書き込みパスワードを入力しなかった場合は読み取り専用でブックは開きます。設定済みの書き込みパスワードを解除する場合は空文字列を設定して保存します。 | ||||||||||||
ReadOnlyRecommended (省略可) |
読み取り専用の推奨を設定する場合はTrueを指定します。省略時はFalseの扱いになります。 | ||||||||||||
CreateBackup (省略可) |
バックアップファイルを作成する場合はTrueを指定します。省略時はFalseの扱いになります。 | ||||||||||||
AccessMode (省略可) |
ファイルのアクセス方法をXlSaveAsAccessMode列挙型の定数で指定します。
XlSaveAsAccessMode列挙型
|
||||||||||||
ConflictResolution (省略可) |
共有ブックを開いている場合で、他者による変更が自分の変更と競合した場合に自分が開いた共有ブックへどのように反映させるかをXlSaveConflictResolution列挙型の定数で指定します。
XlSaveConflictResolution列挙型
|
||||||||||||
AddToMru (省略可) |
最近使用したブックの一覧に追加する場合はTrueを指定します。省略時はFalseの扱いになります。 | ||||||||||||
TextCodepage (省略可) |
使いません。設定しても無視されます。 | ||||||||||||
TextVisualLayout (省略可) |
使いません。設定しても無視されます。 | ||||||||||||
Local (省略可) |
Excelの言語設定に合わせた形式で保存する場合はTrueを指定します。VBAの言語設定に合わせる場合はFalseを指定します。省略時はFalseの扱いになります。 | ||||||||||||
WorkIdentity (省略可) |
不明。 |
サンプルコード
コード1:既にあるブックを開いて別名で保存する
以下のコードは、既に存在するブックを開いて、別名で保存します。
ブックを開くにはWorkbooks.Openメソッドを使います。詳細は「VBAでExcelブックを開く方法(Workbooks.Open)」をご参照ください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub WorkbookSaveAsTest() Dim wb As Workbook '// ワークブック '// ワークブックを開く Set wb = Workbooks.Open("V:\SaveAsTest\a.xlsx") '// 一番左のシートのA1セルを書き換える wb.Worksheets(1).Range("A1").Value = "abc" '// 保存する Call wb.SaveAs(Filename:="V:\SaveAsTest\b.xlsx") '// 閉じる Call wb.Close End Sub |
コード1:ブックを新規作成して名前を付けて保存する
以下のコードは、ブックを新規作成して名前を付けて保存します。
ブックの新規作成はAddメソッドを利用します。Addメソッドについての詳細は「VBAでブックの新規作成を行う(Workbooks.Add)」をご参照ください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Sub NewWorkbookSaveAsTest() Dim wb As Workbook '// ワークブック '// ワークブックを新規作成する Set wb = Workbooks.Add '// 一番左のシートのA1セルを書き換える wb.Worksheets(1).Range("A1").Value = "abc" '// 保存する Call wb.SaveAs(Filename:="V:\SaveAsTest\c.xlsx") '// 保存先パスを出力 Debug.Print wb.FullName '// 閉じる Call wb.Close End Sub |