EXCEL VBA ブックを閉じる(ブック全てを保存して閉じる・変更されていれば保存・保存しないで閉じる)
EXCEL VBA ブックを閉じる(ブック全てを保存して閉じる・変更されていれば保存・保存しないで閉じる:Close・Saved・Save)
●EXCEL VBA EXCELファイル・ワークブック・アクティブシートの保存・上書き保存・選択保存
(SaveAs・GetSaveAsFilename)の方法につきましては、下記のURLを参照にして下さい。
●オブジェクト.Close(SaveChanges,Filename)
※ブックを閉じる時に使用
【SaveChanges】・・・下記参照
【Filename】・・・ブックの保存先を指定
SaveChangesの値及び説明 | |
---|---|
値 | 説明 |
True | ①引数:Filename(設定あり)ブックに変更があった場合は、指定されたファイル名で保存される。 ②引数:Filename(設定なし)既存ブックは上書き保存される。ただし、新規ブックの場合は、「名前を付けて保存」ダイアログボックスが表示される。また、ブックに変更がない場合は、そのまま閉じる |
False | ブック変更を保存しないで閉じる |
設定なし(省略) | ブックに変更がある場合は、保存するか確認メッセージが表示される |
記述例:ActiveWorkbook.Close True, “C:\HOZON\TEST_BOOK.xlsm”
説明 :現在開いているワークブックをCドライブの”Hozon”フォルダーの中に「TEST_BOOK.xlsm”」の名前で保存します。
●オブジェクト.Saved
※ブックの内容が変更されているか確認
Saved = True ・・・ ブックの内容が変更されている。
Saved = False ・・・ブックの内容が変更されていない。
●アプリケーションオブジェクト.Ouit
※EXCELアプリケーションを終了します。
Application.Quit ・・・EXCELを終了
EXCELブックを閉じる(Close) 4パターン
下記のサンプルプログラムは、EXCELブックを閉じる方法を4パターン作成しました。
①アクティブブックを閉じます。[ True ]の場合、変更があれは、同じファイルに保存し閉じます。変更が無ければ、そのまま閉じます。
②アクティブブックを閉じます。[ False ]の場合、変更があってもそのまま閉じます。
③アクティブブックを閉じます。[ 省略 ]の場合、変更があった場合は、保存するか確認メッセージが表示されます。
④アクティブブックの変更が合った場合、別のファイル名で別の場所に保存します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
Sub Close01() 'ブックを閉じる① ActiveWorkbook.Close True, ActiveWorkbook.FullName 'アクティブブックを閉じます。[ True ]の場合、変更があれは、同じファイルに保存し閉じます。変更が無ければ、そのまま閉じます。 End Sub Sub Close02() 'ブックを閉じる② ActiveWorkbook.Close False, ActiveWorkbook.FullName 'アクティブブックを閉じます。[ False ]の場合、変更があってもそのまま閉じます。 End Sub Sub Close03() 'ブックを閉じる③ ActiveWorkbook.Close 'アクティブブックを閉じます。[ 省略 ]の場合、変更があった場合は、保存するか確認メッセージが表示されます。 End Sub Sub Close04() 'ブックを閉じる④ ActiveWorkbook.Close True, "C:\Hozon\TEST_BOOK2.xlsm" 'アクティブブックの変更が合った場合、別のファイル名で別の場所に保存します。 End Sub |
EXCELブックを保存 (Save)【現在のアクティブブックを保存・全てのブックを全て保存】
下記のサンプルプログラムは、EXCELブックを保存する方法の2パターンを作成しました。
①現在のアクティブブックを保存(Save)します。
②全てのブックを全て保存してEXCELを終了します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub CloseSave01() '現在のアクティブブックを保存(Save)します Application.DisplayAlerts = True '保存する際の警告メッセージを無視します。 ActiveWorkbook.Save '現在のアクティブブックを保存(Save)します。 Application.DisplayAlerts = False '警告メッセージの無視を解除します。 Application.Quit 'EXCELを終了 End Sub |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Sub CloseSave02() '全てのブックを全て保存してEXCELを終了します。() Dim AllBook As Workbook Application.DisplayAlerts = True '保存する際の警告メッセージを無視します。 For Each AllBook In Workbooks '開いているワークブック全てをループします。 AllBook.Save 'ワークブック全てを保存(Save)します。 Next AllBook Application.DisplayAlerts = False '警告メッセージの無視を解除します。 Application.Quit 'EXCELを終了 End Sub |
EXCELブックの状態確認①【EXCELデータが変更されているか判定します。】
下記のサンプルプログラムは、現在、開いているEXCELブックが前回保存した状態からデータが変更されているか判定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Sub Change_Save01() 'EXCELデータが変更されているか判定します。 If ActiveWorkbook.Saved = True Then MsgBox "変更されています" 'True :変更が有る場合 ActiveWorkbook.Save '現在のアクティブブックを保存(Save)します。 Else MsgBox "変更ありません" 'False:変更が無い場合 End If End Sub |
EXCELブックの状態確認② 【複数開いているEXCELデータの内容が変更されているブックを保存します。】
下記のサンプルプログラムは、複数開いたブックから内容が変更されているブックを保存します。現在、開いているEXCELブックが前回保存した状態からデータが変更されているか判定して、ブックを保存した件数をメッセージボックスで表示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Sub Change_Save02() '複数開いているEXCELデータの内容が変更されているブックを保存します。 Dim AllBook As Workbook Dim I As Long I = 0 Application.DisplayAlerts = True '保存する際の警告メッセージを無視します。 For Each AllBook In Workbooks '開いているワークブック全てをループします。 If AllBook.Saved = True Then AllBook.Save 'EXCELデータの変更されているブックを保存(Save)します. I = I + 1 End If Next AllBook Application.DisplayAlerts = False '警告メッセージの無視を解除します。 MsgBox I & "件のEXCELブックを保存しました。" End Sub |
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。