Excel: Последнее изменения в файле на почту?
Модератор: Naeel Maqsudov
День добрый,
подскажите а можно ли как-то оповещать , паример на email следующее:
имеем файл на сетевом диски, доступ к нему у 5ти человек, можно ли что б при внесении любых изменений и сохранении файла (кем либо из этих 5ти человек) на почту приходило сообщение о том что дата-время файл был изменен тем-то.
Спасибо
Огромное.
подскажите а можно ли как-то оповещать , паример на email следующее:
имеем файл на сетевом диски, доступ к нему у 5ти человек, можно ли что б при внесении любых изменений и сохранении файла (кем либо из этих 5ти человек) на почту приходило сообщение о том что дата-время файл был изменен тем-то.
Спасибо
Огромное.
Код модуля:
Модуль "ЭтаКнига":
Модуль листов, где отслеживаются изменения:
К сожалению, всё это работает, если у пользователей настроен на отправку сообщений Outlook и в нём установлен низший уровень безопасности. Кроме того, неизвестно, как всё это будет взаимодействовать с установленными файерволами и антивирусами. Как всё это обойти - это вопрос к макровирусописателям.
P.S: С учётом замечаний коллег http://forum.developing.ru/showthread.php?t=16268 правильнее заменить "Application.UserName" на "Environ("USERNAME")".
Код: Выделить всё
Global ChangeBook As Boolean
Sub SendOutlook()
Dim OutlookApp As Outlook.Application
Dim MyItem As Outlook.MailItem
Set OutlookApp = New Outlook.Application
Set MyItem = OutlookApp.CreateItem(olMailItem)
With MyItem
.To = "Mymail@mymail.zu"
.Subject = "Изменение файла"
.Body = "Файл «" & ThisWorkbook.Name & "»" & Chr(10) & "изменён " & Application.Text(Now, "mm.dd.yyyy h:mm") _
& Chr(10) & "пользователем «" & Application.UserName & "»."
.Send
End With
End Sub
Код: Выделить всё
Private Sub workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If ChangeBook = True Then SendOutlook
End Sub
Код: Выделить всё
Sub WorkSheet_Change(ByVal Target As Range)
ChangeBook = True
End Sub
P.S: С учётом замечаний коллег http://forum.developing.ru/showthread.php?t=16268 правильнее заменить "Application.UserName" на "Environ("USERNAME")".
- Aent
- Сообщения: 1129
- Зарегистрирован: 01 окт 2006, 14:52
- Откуда: Saratov,Russia
- Контактная информация:
Blat - Win32 utility to send
SMTP mail from the command line.
Useful for sending mail from
automated jobs, HTML CGI scripts,
etc. Includes source code.
Public Domain.
see http://www.blat.net
SMTP mail from the command line.
Useful for sending mail from
automated jobs, HTML CGI scripts,
etc. Includes source code.
Public Domain.
see http://www.blat.net
Андрей Энтелис,
aentelis.livejournal.com
aentelis.livejournal.com
- Aent
- Сообщения: 1129
- Зарегистрирован: 01 окт 2006, 14:52
- Откуда: Saratov,Russia
- Контактная информация:
Есть куча програм оповещалок которые умеют при изменении файла высылать E-Mail и которые легко можно запустить службами на сервере
На крайний случай есть WMI
Конечно имя пользователя последним правившего файл будет доступно только на NTFS
Предполагается что есть домен
На крайний случай есть WMI
Конечно имя пользователя последним правившего файл будет доступно только на NTFS
Предполагается что есть домен
Андрей Энтелис,
aentelis.livejournal.com
aentelis.livejournal.com
Интересная утилита, надо будет с ней разобраться... Это-ж с помощью неё из Экселя можно целый почтовик сварганить! Одно плохо: опять из эксель-проекта целая сборка для инсталляции получается. 

Вот это, наверное, действительно оптимальное решение в данном случае. А имя пользователя, последнего изменившего файл, можно в Excel в отдельную ячейку макросом записывать." писал(а):Есть куча програм оповещалок которые умеют при изменении файла высылать E-Mail и которые легко можно запустить службами на сервере
На крайний случай есть WMI
А что за програмы не подскажите? и как их правильно насторить?" писал(а):Есть куча програм оповещалок которые умеют при изменении файла высылать E-Mail и которые легко можно запустить службами на сервере
AlexZZZ,
Compile error:
User-defined type not defined
что это может быть?
спасибо
при сохранение следующая ошибка:Sub SendOutlook()
Dim OutlookApp As Outlook.Application
Compile error:
User-defined type not defined
что это может быть?
спасибо
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
shao писал(а):AlexZZZ,
при сохранение следующая ошибка:
Compile error:
User-defined type not defined
что это может быть?
Дык, Outlook.Application у Вас - неизвестный тип. Либо не установлен аутлук, либо просто не добавлеена библиотека к проекту. См. свойства проекта.
shao писал(а):А что за програмы не подскажите? и как их правильно насторить?
Там ссылка была выше.
Naeel Maqsudov, аутлук установлен, всё почта через аутлук отправлется, при клике на e-mail адрес открывается сразу окно аутлука.
наверное что-то с библиотекой? а где взять куда добавить? спасибо.
наверное что-то с библиотекой? а где взять куда добавить? спасибо.
в редакторе vba
tools - refrences
tools - refrences
ака хинт: коментируйте код, самим же легче будет разобраться 
