●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ブックを閉じる方法を4パターン作成しました。
①アクティブブックを閉じます。[ True ]の場合、変更があれは、同じファイルに保存し閉じます。変更が無ければ、そのまま閉じます。
②アクティブブックを閉じます。[ False ]の場合、変更があってもそのまま閉じます。
③アクティブブックを閉じます。[ 省略 ]の場合、変更があった場合は、保存するか確認メッセージが表示されます。
④アクティブブックの変更が合った場合、別のファイル名で別の場所に保存します。
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ブックを保存する方法の2パターンを作成しました。
①現在のアクティブブックを保存(Save)します。
②全てのブックを全て保存してEXCELを終了します。
Sub CloseSave01() '現在のアクティブブックを保存(Save)します Application.DisplayAlerts = True '保存する際の警告メッセージを無視します。 ActiveWorkbook.Save '現在のアクティブブックを保存(Save)します。 Application.DisplayAlerts = False '警告メッセージの無視を解除します。 Application.Quit 'EXCELを終了 End Sub
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ブックが前回保存した状態からデータが変更されているか判定します。
Sub Change_Save01() 'EXCELデータが変更されているか判定します。 If ActiveWorkbook.Saved = True Then MsgBox "変更されています" 'True :変更が有る場合 ActiveWorkbook.Save '現在のアクティブブックを保存(Save)します。 Else MsgBox "変更ありません" 'False:変更が無い場合 End If End Sub
下記のサンプルプログラムは、複数開いたブックから内容が変更されているブックを保存します。現在、開いているEXCELブックが前回保存した状態からデータが変更されているか判定して、ブックを保存した件数をメッセージボックスで表示します。
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