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

Excel VBA を使ってブックが最後に保存されてから何か変更が行われているかどうかを確認する方法を解説します。

(Last modified: )

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

ブックに変更が行われているか確認するには 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」に設定しても実際に保存がされるわけではありませんので注意して下さい。

サンプルプログラム

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

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 )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。