VBA入門
ブックを閉じる・保存(Close,Save,SaveAs)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
公開日:2013年5月以前 最終更新日:2022-12-15

第64回.ブックを閉じる・保存(Close,Save,SaveAs)


VBA マクロ ブックを開く Open

ワークブックを閉じる場合や保存する場合のマクロVBAの説明です。
閉じる時に保存するか保存しないかを指定できます。
また、
ブックを保存するにも、上書きなのか別ファイルにするのか等によってVBAの記述がそれぞれ違ってきます。



ブックを閉じる

ブックを閉じるには、WorkbookのCloseメソッドを使用します。

Workbook.Close SaveChanges, Filename, RouteWorkbook

SaveChanges ブックに変更がない場合、この引数は無視されます。ブックに変更がある場合、この引数で変更を保存するかどうかを指定します。
Filename 変更後のブックのファイル名。
RouteWorkbook ブックの回覧。

全ての引数がオプション(任意の指定)となっています。

全ての引数を省略
Workbook.Close
とだけ指定した場合は、ブックに変更が無ければそのまま閉じられ、
ブックに変更がある場合は、保存確認のメッセージが表示されます。
ただし、
Application.DisplayAlerts = False
これが指定されている場合は、確認のメッセージが表示されずに保存もされません。

SaveChanges
ブックに変更がある場合に、保存するかどうかを指定します。
True:ブックに変更がある場合は保存します。
False:ブックに変更があっても保存せずに閉じます。

保存しないで閉じる
Workbook.Close SaveChanges:=False

保存して閉じる
Workbook.Close SaveChanges:=True

他の引数は、通常はあまり使用しません。


ブックを上書き保存

ブックを上書き保存するには、WorkbookのSaveメソッドを使用します。

Workbook.Save

これで上書き保存されます。


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

ブックを名前を付けて保存するには、WorkbookのSaveAsメソッドを使用します。

Workbook.SaveAs FileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local

Filename 保存するファイルの名前を表す文字列を指定します。
FileFormat ファイルを保存するときのファイル形式を指定します。
Password ファイルを保護するためのパスワードを表す15 文字以内の文字列を指定します。
WriteResPassword ファイルの書き込みパスワードを表す文字列を指定します。
ReadOnlyRecommended 読み取り専用で開くことを推奨するメッセージを表示するには、True を指定します。
CreateBackup バックアップ ファイルを作成するには、True を指定します。
AccessMode ブックのアクセス モードを指定します。
ConflictResolution ブックを保存するときの競合の解決方法を指定します。
AddToMru 最近使用したファイルの一覧にブックを追加するにはTrueを指定。既定値はFalseです。
TextCodepage 使用しない。
TextVisualLayout 使用しない。
Local 通常は使用しない。
※csv出力時
 日付がm/d/yyyyになってしまう場合に、yyyy/m/dにする場合にはTrueを指定

全ての引数がオプション(任意の指定)となっています。
しかし通常は、FileNameは必ず指定します。

FileName
フルパスで指定して下さい。
パスを指定しない場合は、カレントフォルダーに保存されます。

FileFormat
xlExcel8 : Excel2007以降の、xlsxまたはxlsm
xlExcel9795 : Excel2003以前のxls

Excel2003以前では、xlExcel8、この定数は使用できません、コンパイルエラーとなります。

SaveAsメソッドの使用例
Thisworkbook.SaveAs "C:\User\sample.xlsm"

実行しているマクロが書かれているブックが、"C:\User\sample.xlsm" で保存されます。
既にファイルが存在する場合は、以下のダイアログメッセージが表示されます。

マクロ VBA ブックの保存 Save SaveAs SaveCopyAs

「はい」を選択すれば上書き保存されますが、
「いいえ」または「キャンセル」を選択すると、VBAは以下のエラーで停止します。

マクロ VBA ブックの保存 Save SaveAs SaveCopyAs

SaveAsに先立って、
Application.DisplayAlerts = False
これを実行しておくことで、既にファイルが存在していてもそのまま上書き保存されます。

Application.DisplayAlerts = False
ThisWorkbook.SaveAs "D:\temp\sample.xlsm"


ブックのコピーを保存

ブックのコピー(別ファイルとして)を保存するには、WorkbookのSaveCopyAsメソッドを使用します。

Workbook.SaveCopyAs Filename

ブックのコピーを別ファイルとして保存します。
メモリ上のブック(開かれているブック)に対しては、変更は行われません。
バックアップの作成等で使用します。


ブックを閉じる・保存の実践例

他のブックが開かれている場合は、自身のブックを閉じ、
他のブックが開かれていない場合は、Excelを終了する場合。

Sub 保存して終了()
  If Workbooks.Count > 1 Then
    ThisWorkbook.Close SaveChanges:=True
  Else
    ThisWorkbook.Save
    Application.Quit
  End If
End Sub

Sub 保存しないで終了()
  If Workbooks.Count > 1 Then
    ThisWorkbook.Close SaveChanges:=False
  Else
    ThisWorkbook.Saved = True
    Application.Quit
  End If
End Sub

Application.Quit
Applicationオブジェクトのメソッドで、Excelを終了します。

ThisWorkbook.Saved = True
.Savedプロパティには、ブックが保存後に変更されたかの情報が入っていて、値の設定も可能です。
.
SavedをTrueにすることで保存後に変更が無い状態にすることが出来ます。
これにより、Close時に保存確認のメッセージが表示されないようにしています。
これは、
Application.DisplayAlerts = False
Application.Quit
このようにしても同じ結果になります。




同じテーマ「マクロVBA入門」の記事

第61回.「On Error GoTo」と「Exit Sub」

・On Error GoTo 行ラベル ・Exit Sub ・On Error の有効範囲とその動作について ・最後に
第62回.「On Error Resume Next」とErrオブジェクト
・On Error Resume Next ・Errオブジェクト ・On Error Resume Next の使用例 ・「On Error Resume Next」の最後に
第63回.ブックを開く(Open,Add)
・Workbooks.Openメソッド ・Openメソッドの使用例 ・Openメソッドの戻り値の使い方 ・Workbooks.Addメソッド ・Openメソッドの関連記事
第64回.ブックを閉じる・保存(Close,Save,SaveAs)
第65回.シートの挿入、名前の変更(Add,Name)
・シートの挿入 ・シートの名前変更 ・シート挿入、名前変更の実践例
第66回.シートのコピー・移動・削除(Copy,Move,Delete)
・シートのコピー・移動 ・シートの削除 ・シートのコピー・移動・削除の関連記事
第67回.総合練習問題7
・マクロVBA練習問題 ・シンキングタイム ・マクロVBA練習問題解答へ
第68回.シートの保護、ブックの保護(Protect)
・シートの保護 ・シートの保護解除 ・シート保護・解除の実践例 ・ブックの保護 ・ブックの保護解除 ・最後に
第69回.シートの非表示(Visible,Hidden)
ユーザーが操作・閲覧する必要のないシートは非表示にする事で使い易いExcelブックにします。マスタ情報やマクロでのみ使用するデータが入っているシート等、通常は使用者が変更することがなく、見る必要もないのであれば、シート保護をするより非表示にしてしまった方が、ユーザーにとっては使いやすいブックとなります。
第70回.ウィンド枠の固定(FreezePanes)
ウィンドウ枠を固定し、行の上部や列の左側がスクロールされないようにする場合のマクロVBA解説になります。ワークシートの行の上部や列の左側は、通常は見出しとして使う事が多くなります。ウィンドウ枠を固定することで見出しの行や列を固定し、スクロールしても見出しが表示されたままにする場合が多くなります。
第71回.印刷(PrintOut)
・PrintOutメソッド ・PrintOutメソッドの使用例 ・印刷時にプリンターを選択したい場合 ・印刷総ページ数の取得 ・間違った印刷を大量に行わないわない為には


新着記事NEW ・・・新着記事一覧を見る

エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.並べ替え(Sort)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.ひらがな⇔カタカナの変換|エクセル基本操作




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。


このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ