Поскольку в Excel изначально нет грязного флага, вам нужно создать его одним из двух способов:
Перехватить событие редактирования ячейки и записать список отредактированных ячеек, которые являются грязными.
Dim Dirty As New Collection
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim sheet As Worksheet
Set sheet = Sh
Dirty.Add (sheet.Name + "!" + Target.Address)
End Sub
ИЛИ
Когда вам нужен грязный флаг, откройте сохраненную копию за кулисами и сравните две, чтобы увидеть, что изменилось.