Страница 1 из 3

Excel: Последнее изменения в файле на почту?

Добавлено: 14 ноя 2008, 16:20
shao
День добрый,
подскажите а можно ли как-то оповещать , паример на email следующее:

имеем файл на сетевом диски, доступ к нему у 5ти человек, можно ли что б при внесении любых изменений и сохранении файла (кем либо из этих 5ти человек) на почту приходило сообщение о том что дата-время файл был изменен тем-то.

Спасибо
Огромное.

Re: Excel: Последнее изменения в файле на почту?

Добавлено: 15 ноя 2008, 16:16
AlexZZZ
Код модуля:

Код: Выделить всё

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
К сожалению, всё это работает, если у пользователей настроен на отправку сообщений Outlook и в нём установлен низший уровень безопасности. Кроме того, неизвестно, как всё это будет взаимодействовать с установленными файерволами и антивирусами. Как всё это обойти - это вопрос к макровирусописателям.


P.S: С учётом замечаний коллег http://forum.developing.ru/showthread.php?t=16268 правильнее заменить "Application.UserName" на "Environ("USERNAME")".

Re: Excel: Последнее изменения в файле на почту?

Добавлено: 15 ноя 2008, 23:35
Aent
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

Re: Excel: Последнее изменения в файле на почту?

Добавлено: 15 ноя 2008, 23:36
Aent
Есть куча програм оповещалок которые умеют при изменении файла высылать E-Mail и которые легко можно запустить службами на сервере
На крайний случай есть WMI
Конечно имя пользователя последним правившего файл будет доступно только на NTFS
Предполагается что есть домен

Re: Excel: Последнее изменения в файле на почту?

Добавлено: 16 ноя 2008, 00:41
AlexZZZ
Интересная утилита, надо будет с ней разобраться... Это-ж с помощью неё из Экселя можно целый почтовик сварганить! Одно плохо: опять из эксель-проекта целая сборка для инсталляции получается. :(
&quot писал(а):Есть куча програм оповещалок которые умеют при изменении файла высылать E-Mail и которые легко можно запустить службами на сервере
На крайний случай есть WMI
Вот это, наверное, действительно оптимальное решение в данном случае. А имя пользователя, последнего изменившего файл, можно в Excel в отдельную ячейку макросом записывать.

Re: Excel: Последнее изменения в файле на почту?

Добавлено: 17 ноя 2008, 10:12
shao
&quot писал(а):Есть куча програм оповещалок которые умеют при изменении файла высылать E-Mail и которые легко можно запустить службами на сервере
А что за програмы не подскажите? и как их правильно насторить?

Re: Excel: Последнее изменения в файле на почту?

Добавлено: 17 ноя 2008, 10:16
shao
AlexZZZ,
Sub SendOutlook()
Dim OutlookApp As Outlook.Application
при сохранение следующая ошибка:
Compile error:
User-defined type not defined

что это может быть?

спасибо

Re: Excel: Последнее изменения в файле на почту?

Добавлено: 17 ноя 2008, 10:40
Naeel Maqsudov
shao писал(а):AlexZZZ,
при сохранение следующая ошибка:
Compile error:
User-defined type not defined
что это может быть?


Дык, Outlook.Application у Вас - неизвестный тип. Либо не установлен аутлук, либо просто не добавлеена библиотека к проекту. См. свойства проекта.

shao писал(а):А что за програмы не подскажите? и как их правильно насторить?


Там ссылка была выше.

Re: Excel: Последнее изменения в файле на почту?

Добавлено: 17 ноя 2008, 11:05
shao
Naeel Maqsudov, аутлук установлен, всё почта через аутлук отправлется, при клике на e-mail адрес открывается сразу окно аутлука.

наверное что-то с библиотекой? а где взять куда добавить? спасибо.

Re: Excel: Последнее изменения в файле на почту?

Добавлено: 17 ноя 2008, 11:31
demon416
в редакторе vba
tools - refrences