Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Пользуются ли моим файлом?

9.8K
10 ноября 2005 года
Ilya_26
19 / / 29.09.2005
У меня следующий вопрос.
Есть заказчик информации. Я ее делаю (Excel), выкладываю на общий диск и обновляю с какой-либо переодичностью. Заказчик благодарит и говорит, что пользуется этой инфой чуть ли не каждый день. Но есть подозрения, что он нагло врет и мои усилия по обновлению напрасны!

Вопрос: как фиксировать точку открытия, закрытия файла, и лицо производившее эти действия.

P.S. Задача решена в случае, когда человек открывая мой файл запускает макросы, но как быть если на компе стоит высокая степерь безопасности и макросы при открытии не работают!?
Сейчас это делается так:
Sub Auto_Open()
путь = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
Application.ScreenUpdating = False
Workbooks.Open Filename:= _
"G:\Shared\Projects\Sales Leadership\Working Materials\Models\Ðîññèÿ\Commission model NEW statistic.xls" _
, Password:="123"
perem = WorksheetFunction.CountA(Columns("a"))
Cells(perem + 1, 1) = perem
Cells(perem + 1, 2) = Application.UserName
Cells(perem + 1, 3) = Date
Cells(perem + 1, 4) = Time
Cells(perem + 1, 7) = путь
ActiveWorkbook.Save
ActiveWindow.Close
Application.ScreenUpdating = True
End Sub
и
Sub Auto_close()
Application.ScreenUpdating = False
Workbooks.Open Filename:= _
"G:\Shared\Projects\Sales Leadership\Working Materials\Models\Ðîññèÿ\Commission model NEW statistic.xls" _
, Password:="123"
Cells(perem + 1, 5) = Date
Cells(perem + 1, 6) = Time
ActiveWorkbook.Save
ActiveWindow.Close
Application.ScreenUpdating = True
End Sub
258
10 ноября 2005 года
SergeySV
1.5K / / 19.03.2003
А если он не будет открывать файл на месте, а перекопирует его себе?

И кстати, где это общая директория находится?
2
10 ноября 2005 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by Ilya_26
открытия, закрытия файла, и лицо производившее эти действия.



обратись к системному администратору. пусть настроит аудит на доступ к файлу. или сделай сам, если имеешь полномочия. я надеюсь система, где лежит файл не Windows 9x? :)

405
10 ноября 2005 года
Dmitrii
554 / / 16.12.2004
Цитата:
Originally posted by Ilya_26
Вопрос: как фиксировать точку открытия, закрытия файла, и лицо производившее эти действия.


 
Код:
Dim myFso, myFile
Const fileSpec = "c:\temp\virt.htm"
Set myFso = CreateObject("Scripting.FileSystemObject")
Set myFile = myFso.GetFile(fileSpec)
MsgBox "Last Accessed: " & myFile.DateLastAccessed

Попробуйте вот этот сценарий. Он позволяет узнать дату последнего обращения к файлу.
Что касается пользователя, то хотелось бы знать следующее:
- как организована сеть?
- как заказчику предоставляется ресурс?
- какие ОС используются у Вас, у заказчика и на компьютере, где хранится рабочая книга?
А лучше - настройте аудит, как советует squirL, если, конечно, есть такая возможность.
9.8K
10 ноября 2005 года
Ilya_26
19 / / 29.09.2005
Цитата:
Originally posted by SergeySV
А если он не будет открывать файл на месте, а перекопирует его себе?

И кстати, где это общая директория находится?



Вариант с перекопированием файла не рассматривается.
Общая директория находится там же, где лежит и сам файл. Файл со сбором статистики запаролен и лежит рядом с исходной инфой.

9.8K
10 ноября 2005 года
Ilya_26
19 / / 29.09.2005
Цитата:
Originally posted by Dmitrii
 
Код:
Dim myFso, myFile
Const fileSpec = "c:\temp\virt.htm"
Set myFso = CreateObject("Scripting.FileSystemObject")
Set myFile = myFso.GetFile(fileSpec)
MsgBox "Last Accessed: " & myFile.DateLastAccessed

Попробуйте вот этот сценарий. Он позволяет узнать дату последнего обращения к файлу.
Что касается пользователя, то хотелось бы знать следующее:
- как организована сеть?
- как заказчику предоставляется ресурс?
- какие ОС используются у Вас, у заказчика и на компьютере, где хранится рабочая книга?
А лучше - настройте аудит, как советует squirL, если, конечно, есть такая возможность.



Насчет настройки аудита - проще заставить заказчика включать макросы, сделав какую-нибудь кнопку, по которой якобы пересчитываются данные (он в этом не понимает).
Отвечу на вопросы:
вся сеть работает в Windows2000, ресурс лежит на общем диске (если речь об этом), несчет организации сети я не силен, но каждый сотрудник имеет свое UserName.

2
10 ноября 2005 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by Ilya_26
Насчет настройки аудита - проще заставить заказчика включать макросы, сделав какую-нибудь кнопку, по которой якобы пересчитываются данные (он в этом не понимает).
Отвечу на вопросы:


это не проще. это неправильный подход. проще и правильнее - выставить аудит средствами системы. это гарантия от всяческих неожиданностей типа заказчика, раскусившего вашу "какую-нибудь кнопку".
политика "он в этом не понимает" - ущербна. на смену непонимающему может придти другой. который понимает лучше вас.

9.8K
10 ноября 2005 года
Ilya_26
19 / / 29.09.2005
Спасибо всем за участие!
Самое важное было понять, возможно ли решить данную задачу средствами VBA, но как я понял, увы, это невозможно.
2
10 ноября 2005 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by Ilya_26
Спасибо всем за участие!
Самое важное было понять, возможно ли решить данную задачу средствами VBA, но как я понял, увы, это невозможно.



ну почему невозможно. видимо возможно. на VBA же пишут программы для системного администрирования. наверняка, если порыться в MSDN можно нарыть функцию, которая получает имя юзера, открывшего макрос и т. п. просто надежнее, ИМХО, так как я сказал.

405
11 ноября 2005 года
Dmitrii
554 / / 16.12.2004
Цитата:
Originally posted by Ilya_26
Спасибо всем за участие!
Самое важное было понять, возможно ли решить данную задачу средствами VBA, но как я понял, увы, это невозможно.


Если вести речь только о собственных средствах VBA, то - невозможно. Да и вообще, здесь нужен не VBA, а VBS, средствами которого уже надо будет обращаться к инструментарию WSH и (или) WMI (возможно понадобится и что-то ещё). Ведь Вы по сути хотите организовать собственную систему аудита за доступом к объекту файловой системы.
Кроме того, Вы не являетесь системным администратором. Следовательно, во-первых, подобная "самодеятельность" может вызвать негативную реакцию со стороны Вашего "сисадмина", во-вторых, Вам могут быть недоступны необходимые для решения задачи системные средства.
Здесь, думаю, уместна цитата:

Цитата:
Originally posted by squirL
... проще и правильнее - выставить аудит средствами системы ...


Впрочем, есть несколько идей. Будет досуг, покопаюсь.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог