Home » エクセルマクロ・Excel VBAの使い方 » Workbooks・Workbook » すべて上書き保存して閉じるマクロ

すべて上書き保存して閉じるマクロ

対象:Excel2003, Excel2007, Excel2010

「エクセルマクロ 一括ファイル上書き保存して閉じる」
という検索が行われていました。

開いているExcelファイルを、すべて上書き保存して閉じるマクロを探している方による検索です。

[スポンサードリンク]

すべてのブックを上書き保存して閉じるサンプルマクロ

以下のようなマクロで、開いているすべてのExcelファイルを上書き保存して閉じることができます。
Sub すべてのブックを上書き保存して閉じる()
 Dim bk As Workbook 
 For Each bk In Workbooks
  If Not (bk Is ThisWorkbook) Then
   bk.Close SaveChanges:=True
  End If
 Next bk
 
 ThisWorkbook.Close SaveChanges:=True
End Sub

開いている全てのブックに対するFor Each~Nextループの中で、
  For Each bk In Workbooks

ブックを閉じる、Workbook.Closeメソッドの引数・SaveChangesにTrueを指定して、
    bk.Close SaveChanges:=True
上書き保存をしています。

ただし、このループ処理の中で、このマクロの書かれているブックが閉じられてしまうと、残りのブックが閉じられずにマクロが終わってしまうので、マクロの書かれているブックについてはループの中では閉じずに、
  If Not (bk Is ThisWorkbook) Then

ループを抜けたあとで最後に閉じています。
 ThisWorkbook.Close SaveChanges:=True

ちなみに、この処理と同様のことをマクロを使わずに行いたい場合、Excel 2003ならば[Shift]キーを押しながらメニュー[ファイル]をクリックすると表示される[すべて閉じる]コマンド、Excel 2007・2010ならばQAT(クイックアクセスツールバー)などに作成した[すべて閉じる]ボタンをクリックして表示された、「変更を保存しますか?」メッセージの[すべて変更]ボタンをクリックしてください。

すべてのブックを上書き保存してExcelを終了するサンプルマクロ

上書き保存して閉じるのではなく、Excel自体を終了させてしまうのならば、以下のようなマクロでもいいでしょう。
Sub すべてのブックを上書き保存してExcelを終了する()
 Dim bk As Workbook
 For Each bk In Workbooks
  bk.Save
 Next bk
 
 Application.Quit
End Sub

ループの中では上書き保存だけを行い、保存が終わったところで、ApplicationオブジェクトのQuitメソッドで、Excelを終了させてしまうというマクロです。

最終更新日時:2020-03-02 10:45

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Workbooks・Workbook » すべて上書き保存して閉じるマクロ

「Workbooks・Workbook」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.
.