ブックの上書き・名前を付けて保存

処理を実行したブックや新規作成したブックを上書きやマクロ有効・無効の標準ブックとして保存するコード

'アクティブブックを上書き保存する
ActiveWorkbook.Save
'アクティブブックを名前を付けてマクロ有効ブックで保存する(同じ場所)
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\Book2", xlOpenXMLWorkbookMacroEnabled
'アクティブブックを名前を付けて標準形式保存する(同じ場所)
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\Book2", xlOpenXMLWorkbook

ブックを上書き保存するには「Save」を使用します

上書き保存するメソッドですが、未保存の新規作成ブックに実行した場合は現在の名称で、Excelの現在のフォルダに保存されます
Excelの通常操作のように、名前を付けて保存の画面が開かれるわけでは無い点に注意してください

現在のフォルダとは、Excelがその時点で参照中のフォルダで作業フォルダやカレントフォルダともいいます
この現在のフォルダは事前の操作によって変化するので注意が必要です

名前を付けて保存をするには「SaveAs」を使用し、引数にはパス名を含めたファイル名までを指定します
マクロの記録では、拡張子まで含めて指定されますがブックの種類を指定すると自動的に付与されるので必要はありません

2つ目のコードでは、このマクロのあるファイルと同じ場所にマクロ有効ブックとして保存しています
「ThisWorkbook.Path」は、このプロシージャがあるファイルが保存されたフォルダ名までのパスです
なのでこれにフォルダ内を表す「\」を結合してファイル名を入力します

ちなみに、画面で「\」はどう表示されているでしょうか?
実はこれは文字の読み込みで表示が変化します
(この記事内にある解説を確認してください)

「Path」プロパティではフォルダ名までなので、このフォルダ内記号を入力後に、ブック名を含めて指定します

引数の2つ目では、ブックの種類を指定することが出来ます
「~~, xlOpenXMLWorkbookMacroEnabled
種類がどんどん増えていってますが、使用するのはそれほど多くは無いと思います

3つ目の例コードでは標準形式が指定されています
これはマクロを含まない形式なるので、マクロが存在する場合はマクロが消失する旨のメッセージが表示されます

これを継続実行する事でマクロが全て削除されたブックが完成します
この動きを利用して、あえてマクロを削除することでセキュリティに関する対応をいちいち行わなくて済むブックを作成することもできます

また、パス名を省略してファイル名のみで保存することはできますがその際は上記にもあるExcelの現在のフォルダが対象となります

そのフォルダを変更するコードはありますが、そんなコードを実行するぐらいならパス名を指定するほうがいいです


関連の記事