最後に保存されてから変更されているか確認する

広告

ブックが最後に保存されてから何か変更が行われているかどうかを確認する方法を見ていきます。Workbookオブジェクトの「Saved」プロパティで確認することが出来ます。

If ActiveWorkbook.Saved = True Then
    MsgBox "変更されていません"
Else
    MsgBox "変更された内容が保存されていません"
End if

「Saved」プロパティが「True」の場合には、ブックが最後に保存されてから何も変更が行われていない事になります。逆に「False」の場合には保存されていない変更分が存在していることになります。

「Saved」プロパティは値を参照するだけではなく、値を設定することも可能です。

ActiveWorkbook.Saved = True
ActiveWorkbook.Close

何か変更があったにも関わらず、単にブックを閉じようとすると「変更を保存しますか」という確認ダイアログが表示されますが、保存されていないにも関わらず「Saved」プロパティに「True」を設定すると最後に保存してから何も変更がなかったかのように扱われるため、確認ダイアログが表示されずにブックは閉じられるようになります。

注意する点は「Saved」プロパティを「True」に設定しても実際に保存がされるわけではありませんので注意して下さい。

サンプルプログラム

では簡単なサンプルで試してみましょう。

testbooknew12.bas

Sub テスト()
    
    Workbooks.Open filename:="C:¥excelsample¥2005年成績.xls"
    
    If ActiveWorkbook.Saved = True Then
        MsgBox "変更されていません"
    Else
        MsgBox "変更されています"
    End If
    
    ActiveSheet.Range("A1").Value = "保存"

    If ActiveWorkbook.Saved = True Then
        MsgBox "変更されていません"
    Else
        MsgBox "変更されています"
    End If
        
End Sub

上記マクロを実行すると下記のようになります。

最後に保存されてから変更されたかどうかの確認

まずブックを開いた直後に変更がされたかどうかを確認しています。開いた直後ですので何も変更が行われていませんので上記のように表示されます。

最後に保存されてから変更されたかどうかの確認

次にセルA1に値を設定しています。これで最後に保存されてから変更が加えられた状態となります。「Saved」プロパティを確認してみると上記のように変更されていることを認識していることが確認できます。

Excel VBA入門の他の記事を見てみる

( Written by Tatsuo Ikura )