Страницы: 1
RSS
Отправка сообщения на почту при определенных изменениях в файле
 
Здравствуйте уважаемые форумчане.

Такой вопрос. Возможно сделать такую вещь. Допустим я человеку дал файл. Может ли ексель отправить сообщение на мою почту, если допустим были сделаны какие то корректировки в файле, к примеру был открыт VBA или попытка разблокировать, заблокированные файлы? Ну или банальные изменения в ячейках или определенных местах/листах?
Я так понимаю, по идее можно сделать макрос на отслеживание действий в ячейках и т.д, но не знаю сможет ли он проследить за действиями инструментов, типо включить VBA или вставка чего либо.

Нашел на просторах интернета только некий макрос который через оутлук отправляет по кнопке файл. (Но как раз таки нужно скрыто отслеживать только определенные изменения или переходы и при таком деянии отправить сообщение, с типом изменения и остальными возможными данными)
 
Можно и без использования Оутглюка. Только заведите ещё один почтовый ящик с адреса которого будут приходить сообщения.
Код
Const CDO_Cnf = "http://schemas.microsoft.com/cdo/configuration/"
Dim oCDOCnf As Object, oCDOMsg As Object
AddressTo = "test1@mail.ru"                              ' Адрес Кому
SubjectTxt = "Изменение в файле"                         ' Тема письма
BodyTxt = Now & " изменена ячейка"                       ' Текст письма
AttachmentsFile = ""                                     ' Вложение
AddressFrom = "test2@mail.ru"                            ' Адрес От кого
PostServer = "smtp.mail.ru"                              ' Почтовый сервер
sAuth = 1                                                ' Аутентификация
sUsername = "test1"                                      ' Учётная запись
sPass = "222"                                            ' Пароль учётной записи
PortServer = 465                                         ' Порт (25 или 465 при использовании SSL)
SSL_useServer = True                                     ' Использование SSL
ReturnSend = False                                       ' Подтверждение прочтения
'           Назначение конфигурации CDO
Set oCDOCnf = CreateObject("CDO.Configuration")
With oCDOCnf.Fields
    .Item(CDO_Cnf & "sendusing") = 2
    .Item(CDO_Cnf & "smtpserver") = PostServer
    .Item(CDO_Cnf & "smtpauthenticate") = sAuth
    If sAuth = 1 Then
        .Item(CDO_Cnf & "sendusername") = sUsername
        .Item(CDO_Cnf & "sendpassword") = sPass
    End If
    .Item(CDO_Cnf & "smtpserverport") = PortServer
    .Item(CDO_Cnf & "smtpusessl") = SSL_useServer
    .Item(CDO_Cnf & "smtpconnectiontimeout") = 60
    .Update
End With
'           Создание сообщения
Set oCDOMsg = CreateObject("CDO.Message")
With oCDOMsg
    Set .Configuration = oCDOCnf
    .BodyPart.Charset = "koi8-r"
    .From = AddressFrom
    .To = AddressTo
    .Subject = SubjectTxt
    .TextBody = BodyTxt
    If Len(AttachmentsFile) > 0 Then
        .AddAttachment AttachmentsFile
    End If
    If ReturnSend Then
        .Fields("urn:schemas:mailheader:Disposition-Notification-To") = AddressFrom
        .Fields("urn:schemas:mailheader:Return-Receipt-To") = AddressFrom
        .DSNOptions = cdoDSNSuccessFailOrDelay
        .Fields.Update
    End If
    .Send
End With
Set oCDOMsg = Nothing: Set oCDOCnf = Nothing
Нужно только правильно указать параметры SMTP-сервера, в примере параметры для Mail.ru
Примеров как отследить изменение ячеек на этом форуме много. А вот о событиях на открытие VBA или попытки снять защиту - не знаю.
Не стреляйте в тапера - он играет как может.
 
Ts.Soft, Не факт что порты открыты, а Proxy не используется при таким соединении, даже если там все открыто.

Gagarin13,  Не факт что клиент Outlook настроен, тогда надо через MAPI клиента по умолчанию, если он есть. Можно гипотетически пойти через WEB, в надежде что интернет есть, но все мне кажется бесполезно из-за невозможности отловить события желаемые.


Модераторы , просьба заменить "маил" на  "почту" , "мэйл", "Mail" , "E-Mail" . глаз режет, да и найти такое потом  сможет только тот для кого это МАИЛ.
Изменено: БМВ - 15.09.2018 10:15:52
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
а Proxy не используется при таким соединении,
Привет, Михаил.
При желании, можно же и данные по Proxy получить, вариант. А в остальном, ну, можно на событие открытия книги повесить проверку доступа к интернету, если сразу не получается запросить параметры того самого Proxy, если макросы не включены или не сообщены данные Proxy, то показывать только страницу с объяснением, что должны быть включены макросы и дан доступ в интернет. То то Безы будут рады использованию такой Excel книжки у пользователя :)
 
Цитата
Андрей VG написал:
данные по Proxy получить
Андрей, приветствую.  Получить то можно, а что далее? Нужно чтоб SOCKS был и тогда TCP можно туда завернуть, но очень редко кто настраивает это, как правило надобности нет, а скорее наоборот, есть надобность закрыть. Нужно чтоб 25 был открыт на FireWall. …..  Далее прикол, мы открыли файл стукачЁк с доступом в инет и включенными макросами, начали работать и потом отключив интернет, немного шаманить начали.  Если будет способ отследить шаманские события, то тогда можно конечно при невозможности отправки сообщения закрыть файл ….. но пока как раз эта задача не решена.
По вопросам из тем форума, личку не читаю.
 
БМВ, у меня прекрасно работало через прокси. Естественно порты были открыты.
Не стреляйте в тапера - он играет как может.
 
Ts.Soft, Докажите. Я не помню чтоб CDO работало по PROXY настроенном в IE (системному PROXY) без
Код
.Item("http://schemas.microsoft.com/cdo/configuration/urlproxyserver") = "proxy"
.Item("http://schemas.microsoft.com/cdo/configuration/proxyserverport") = 8080
 
и в коде выше я этого не видел?
Возможно порты были открыт для всей подсети  или конкретной машине, может к конкретным SMTP/POP серверам.
По вопросам из тем форума, личку не читаю.
 
БМВ, к сожалению сейчас доказать не могу, т.к. на работе от прокси отказались. Но был прокси UserGate 3. В IE как положено была настройка работы через прокси, т.к. по другому просто не работало. На прокси правила для 25 и 110 портов даже созданы по умолчанию оставалось только включить их конкретному пользователю. Да, порты были открыты для всей подсети. Когда mail.ru, а потом яндекс и прочие перешли на обязательный SSL пришлось искать в сети как заставить CDO работать с SSL и добавить строку в код. Ну и на прокси разрешить 465 и 995.
К сожалению сейчас прокси просто нет и чтобы не пускать некоторых пользователей в интернет приходится в реестре просто запрещать запуск любых приложений кроме десятка из разрешенного списка.
Изменено: Ts.Soft - 15.09.2018 14:23:06
Не стреляйте в тапера - он играет как может.
 
Ts.Soft, тема ушла в сторону cdo. Я всего лишь обратил внимание, что в завмсимости от настроек сети и прочего. Вариант отправки может не работать. И при условии нормального админа не сработает.  В любом случае. Вопрос события ьак и не решен.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
начали работать и потом отключив интернет, немного шаманить начали.
На SelectionChange или на таймер, вешаем проверку Ping любимого сайта www.algolist.ru. Если нет отклика, то книжку в статус чтение, удаление и закрытие без сохранения. Детский сад, конечно, но на гуманитариях должно сработать.
 
Андрей VG, э, э . icmp не проксируется вовсе.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
э, э . icmp не проксируется вовсе.
А это проверяем на этапе
Цитата
Андрей VG написал:
о на событие открытия книги повесить проверку доступа к интернету
дополняем в том числе и по ping. Можно и процитировать на запуске, что книжка распространяется с той же лицензией что и мелкомягких, впрочем и Google тем же грешит, то есть для улучшения работы кода собирается статистика и отправляется без персональных данных на сервер разработчика. Без этого книга не будет функционировать правильно (то есть самоудалится).
 
Цитата
БМВ написал:
Ts.Soft , тема ушла в сторону cdo. Я всего лишь обратил внимание, что в завмсимости от настроек сети и прочего. Вариант отправки может не работать. И при условии нормального админа не сработает.  В любом случае. Вопрос события ьак и не решен.
Как раз таки проблем, с отлуком, интернетом и настройками фаерволами на компе доверителя не будет, этим буду я заниматься, главное понять как можно создать такой функционал, и какие трудности могут с этим возникнуть. И с админом проблем там тоже нету)))))
Цитата
БМВ написал:
Далее прикол, мы открыли файл стукачЁк с доступом в инет и включенными макросами, начали работать и потом отключив интернет, немного шаманить начали.
Ну вряд ли файл начнуть ломать догодавшись отключить интернет. Суть то как раз в том, что бы на стадии только попытки открытия макросов или взлома установленных паролей, уже сразу отправлялось мисьмо счастья с оповещением о злоумышленных действий от определенного юзера.
Изменено: Gagarin13 - 15.09.2018 20:48:49
 
Цитата
Андрей VG написал:
дополняем в том числе и по ping. Можно и процитировать на запуске, что книжка распространяется с той же лицензией что и мелкомягких, впрочем и Google тем же грешит, то есть для улучшения работы кода собирается статистика и отправляется без персональных данных на сервер разработчика. Без этого книга не будет функционировать правильно (то есть самоудалится).
А про это пожалуйста поподробнее) Я как раз собирался новую тему писать по этому поводу) Подскажите пожалуйста как все это можно найболее эффективным и максимально жестким методом реализовать?
 
Цитата
Gagarin13 написал:
пожалуйста поподробнее
По подробнее что? Как искать в Google?
Ping сайта.
VBA самоудаление книги Excel
Что-то ещё поискать? ;)  Или нужно методичку сообразить?
 
Андрей VG, Думал у вас есть конкретный интересный метод) Спасибо за ответ, буду смотреть)    


А по главной теме все таки буду ждать варианты господа)
Изменено: Gagarin13 - 16.09.2018 00:31:19
 
Цитата
Gagarin13 написал:
конкретный интересный метод)
Этот метод, собственно, в этой теме и излагался.
Как уведомить, что пользователь что-то поменял. Как показывать пользователю только лист с уведомлением, если запрещены макросы и нет интернета - легко ищется на сайте. Как защитить проект VBA от просмотра - тоже ищется и какие есть на этом пути проблемы (не решаемые по факту в части защиты собственно кода), что собственно снимает проблему отслеживания перехода в редактор VBA (можно решить скорее всего, но это уже WinAPI, а судя по вашим вопросам - это не ваш уровень квалификации). В прочем, как и то, что это всё защита от чайника. А дальше вам искать компоновать продумывать удовлетворяющую вас структуру защиты.
 
Gagarin13, не надо Вам Ваш метод реализовывать. Защита листа (а соответственно и формул) вскрывается сейчас не просто. Отслеживания перехода в редактор VBA  - То есть если случайно была нажата комбинация Alt+F11, то что, виновен? О бесполезности всех таких мер против подготовленного специалиста тут много на сайте написано, а просто подстраховаться можно обычными средствами.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
Gagarin13 , не надо Вам Ваш метод реализовывать. Защита листа (а соответственно и формул) вскрывается сейчас не просто. Отслеживания перехода в редактор VBA  - То есть если случайно была нажата комбинация Alt+F11, то что, виновен? О бесполезности всех таких мер против подготовленного специалиста тут много на сайте написано, а просто подстраховаться можно обычными средствами.
Ну Alt+F11 обычный пользователь вряд ли догадается нажать случайно.. как бы он ни старался. Да и у меня есть определенные нужды знать что был открыт редактор и и прочая инфа.
 
Цитата
Gagarin13 написал:
Ну Alt+F11 обычный пользователь вряд ли догадается нажать
- это верно , а вот случайно нажать - элементарно. Поверьте, богатый опыт, когда специально не сделаешь, а случайно такое натворят ….
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
а вот случайно нажать - элементарно
Ну, Михаил, хочет человек по развлекаться - флаг в руки. Возможно такой задачей Сергей Doober или Владимир ZVI занимались, хотя сомнения берут.
Gagarin13, для затравки окно редактора VBA определяется классом - картинка 1. Следует не забывать, что в Word и Outlook, например, будут иметь для редактора VBA тот же класс окна.
Окно имеет соответствующий заголовок - картинка 2, в заголовке содержится и имя активного файла (определяется активным проектом).
Если после запуска Excel редактор VBA не запускался, то окна такого класса не будет (хотя, если запущен перед этим Word, а в нём открыт VBA, то естественно будет, но в заголовке окна будет естественно содержаться имя документа, а не книги). Если редактор открывался, а потом был закрыт (без завершения выполнения Excel), то просто меняется флаг стиля окна WS_VISIBLE не будет - картинка 3.
Как то так для затравки на прогулку по миру WinAPI. Хороший помощник в этом - Spy++.
Успехов
 
Андрей VG, Спасибо за более менее развернутый ответ, попробую, с этим что то сделать
Страницы: 1
Наверх