Требуется сделать отправку письма после изменения книги. Т.е. зашли в файл, если что-то внесли и сохранили, то перед закрытием книги отправить письмо.
Использовал сравнение даты изменения файла после открытия и после сохранения. И вроде как работает, но только в том случае если файл ПЕРЕД закрытием сохранить. А в случае если мы закрываем файл и он предлагает сохраниться, то после сохранения письмо не отправляется.
Код
Public fs, f, s, ds, d, b As Variant
Public Sub Workbook_Open()
a = ActiveWorkbook.FullName
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(a)
s = f.DateLastModified
End Sub
Public Sub Workbook_BeforeClose(Cancel As Boolean)
Dim OutApp As Object
Dim OutMail As Object
n = ActiveWorkbook.FullName
Set ds = CreateObject("Scripting.FileSystemObject")
Set d = ds.GetFile(n)
b = d.DateLastModified
If s <> b Then
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = "213jkna@mail.com"
' .cc = ""
.Subject = "Тест " & MyDate
.HTMLBody = "Файл изменен"
.Display
' .send
End With
End If
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
Vladimir69 написал: Использовал сравнение даты изменения файла после открытия и после сохранения
это не дает гарантии того, что книга была изменена. Могли открыть, посмотреть, ничего не менять, сохранить и закрыть. В зависимости от версии Excel можно попробовать использовать событие AfterSave. В Excel вроде как начиная с 2010 появилось.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...