Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Логирование входа-выхода из файла - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Логирование входа-выхода из файла (Макросы/Sub)
Логирование входа-выхода из файла
ArkaIIIa Дата: Среда, 05.08.2015, 09:24 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация: 115 ±
Замечаний: 0% ±

2010
Доброе утро, уважаемые господа!

Имеется следующая проблема.
Есть Файл_1, который зарезервирован пользователем (т.е. при открытии запрашивается пароль, либо предлагается зайти только "для чтения").
Итого: пользователь, знающий пароль может заходить и вносить изменения, не знающий - может только просматривать.
Вариант с защитой книги/листа был отброшен на этапе создания файла по каким-то уже забытым причинам. Скорее всего какой-то из встроенных макросов не работал с защищенным листом.

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

Была мысль прикрутить к файлу макрос:
[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean) 'ищем последнюю занятую строчку в логах
lastrow = Worksheets("Лог").Range("A60000").End(xlUp).Row 'заносим дату-время выхода из файла
If lastrow > 1 Then Worksheets("Лог").Cells(lastrow, 3) = Now 'сохраняемся перед выходом
ActiveWorkbook.Save
End Sub
Private Sub Workbook_Open() 'ищем последнюю занятую строчку в логах
lastrow = Worksheets("Лог").Range("A60000").End(xlUp).Row 'заносим имя пользователя и дату-время входа в файл
Worksheets("Лог").Cells(lastrow + 1, 1) = Environ("USERNAME")
Worksheets("Лог").Cells(lastrow + 1, 2) = Now
End Sub
[/vba]
, чтобы вести лог тех, кто заходит в файл. Однако и тут возникла проблема. Чтобы этот лог сохранился, макрос при закрытии файла пытается его сохранить. Разумеется, когда юзеры входят в него "для чтения", макрос сохранение не отрабатывает, в результате лог не ведется.

Задача: понять кто открывал файл и сколько в нем просидел. (фиксирование системный логин/вход/выход).
Может быть где-то в настройках Excel поставить галочку, чтобы он всегда показывал, кто сидит в файле? Если нет, то, может быть можно вывести логирование открытия/закрытия Файла_1 в Файл_2, который не будет защищен резервированием и спокойной будет сохраняться?

Заранее благодарю!
 
Ответить
СообщениеДоброе утро, уважаемые господа!

Имеется следующая проблема.
Есть Файл_1, который зарезервирован пользователем (т.е. при открытии запрашивается пароль, либо предлагается зайти только "для чтения").
Итого: пользователь, знающий пароль может заходить и вносить изменения, не знающий - может только просматривать.
Вариант с защитой книги/листа был отброшен на этапе создания файла по каким-то уже забытым причинам. Скорее всего какой-то из встроенных макросов не работал с защищенным листом.

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

Была мысль прикрутить к файлу макрос:
[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean) 'ищем последнюю занятую строчку в логах
lastrow = Worksheets("Лог").Range("A60000").End(xlUp).Row 'заносим дату-время выхода из файла
If lastrow > 1 Then Worksheets("Лог").Cells(lastrow, 3) = Now 'сохраняемся перед выходом
ActiveWorkbook.Save
End Sub
Private Sub Workbook_Open() 'ищем последнюю занятую строчку в логах
lastrow = Worksheets("Лог").Range("A60000").End(xlUp).Row 'заносим имя пользователя и дату-время входа в файл
Worksheets("Лог").Cells(lastrow + 1, 1) = Environ("USERNAME")
Worksheets("Лог").Cells(lastrow + 1, 2) = Now
End Sub
[/vba]
, чтобы вести лог тех, кто заходит в файл. Однако и тут возникла проблема. Чтобы этот лог сохранился, макрос при закрытии файла пытается его сохранить. Разумеется, когда юзеры входят в него "для чтения", макрос сохранение не отрабатывает, в результате лог не ведется.

Задача: понять кто открывал файл и сколько в нем просидел. (фиксирование системный логин/вход/выход).
Может быть где-то в настройках Excel поставить галочку, чтобы он всегда показывал, кто сидит в файле? Если нет, то, может быть можно вывести логирование открытия/закрытия Файла_1 в Файл_2, который не будет защищен резервированием и спокойной будет сохраняться?

Заранее благодарю!

Автор - ArkaIIIa
Дата добавления - 05.08.2015 в 09:24
ArkaIIIa Дата: Среда, 05.08.2015, 09:30 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация: 115 ±
Замечаний: 0% ±

2010
Может быть где-то в настройках Excel поставить галочку, чтобы он всегда показывал, кто сидит в файле?

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

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

Автор - ArkaIIIa
Дата добавления - 05.08.2015 в 09:30
KSV Дата: Среда, 05.08.2015, 09:32 | Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Доброе утро!
А что мешает вести лог в другом файле? (про который пользователи даже не будут знать)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
СообщениеДоброе утро!
А что мешает вести лог в другом файле? (про который пользователи даже не будут знать)

Автор - KSV
Дата добавления - 05.08.2015 в 09:32
ArkaIIIa Дата: Среда, 05.08.2015, 09:41 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация: 115 ±
Замечаний: 0% ±

2010
KSV
Привет! Дело в том, что в VBA я полный ноль и не знаю, что нужно добавить в вышеуказанный макрос, чтобы он вел лог Файла_1.
Более того, я не был уверен, что это реализуемо, и какие условия должны соблюдаться, чтобы велся лог. Например, обязательно ли Файл_2 должен быть открыт, для того, чтобы туда заносились данные об открытии Файла_1.
 
Ответить
СообщениеKSV
Привет! Дело в том, что в VBA я полный ноль и не знаю, что нужно добавить в вышеуказанный макрос, чтобы он вел лог Файла_1.
Более того, я не был уверен, что это реализуемо, и какие условия должны соблюдаться, чтобы велся лог. Например, обязательно ли Файл_2 должен быть открыт, для того, чтобы туда заносились данные об открытии Файла_1.

Автор - ArkaIIIa
Дата добавления - 05.08.2015 в 09:41
KSV Дата: Среда, 05.08.2015, 10:18 | Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
например, как-нибудь так:


в папке "C:\Users\User\Downloads\" (путь можете указать свой) должна лежать книга с именем "Книга123_Log.xlsx" (имя открываемого файла + "_Log.xls") с общим доступом.

[p.s.]Или можно вообще все логи (всех открываемых файлов) писать в одну книгу (лог каждого файла на свой лист).[/p.s.]
К сообщению приложен файл: 123.xlsm (15.0 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Среда, 05.08.2015, 10:25
 
Ответить
Сообщениенапример, как-нибудь так:


в папке "C:\Users\User\Downloads\" (путь можете указать свой) должна лежать книга с именем "Книга123_Log.xlsx" (имя открываемого файла + "_Log.xls") с общим доступом.

[p.s.]Или можно вообще все логи (всех открываемых файлов) писать в одну книгу (лог каждого файла на свой лист).[/p.s.]

Автор - KSV
Дата добавления - 05.08.2015 в 10:18
ArkaIIIa Дата: Среда, 05.08.2015, 10:47 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация: 115 ±
Замечаний: 0% ±

2010
KSV
У Вас этот макрос работает нормально?
Я создал файл "123_Log.xlsx" (с общим доступом) в папке Downloads, указал путь к папке (вместо User указал свою учетку). Файл физически там есть, но при открытии файла "123", мне пишет что файл "123_Log.xlsx" не найден.
 
Ответить
СообщениеKSV
У Вас этот макрос работает нормально?
Я создал файл "123_Log.xlsx" (с общим доступом) в папке Downloads, указал путь к папке (вместо User указал свою учетку). Файл физически там есть, но при открытии файла "123", мне пишет что файл "123_Log.xlsx" не найден.

Автор - ArkaIIIa
Дата добавления - 05.08.2015 в 10:47
ArkaIIIa Дата: Среда, 05.08.2015, 10:55 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация: 115 ±
Замечаний: 0% ±

2010
Тэкс, все, нашел в чем проблема. Просто я олень)

KSV
Большое спасибо! Все замечательно работает!
 
Ответить
СообщениеТэкс, все, нашел в чем проблема. Просто я олень)

KSV
Большое спасибо! Все замечательно работает!

Автор - ArkaIIIa
Дата добавления - 05.08.2015 в 10:55
ArkaIIIa Дата: Среда, 05.08.2015, 11:10 | Сообщение № 8
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация: 115 ±
Замечаний: 0% ±

2010
KSV
Обратил внимание, что информация в лог добавляется только при закрытии Файла_1. Можно ли, чтобы запись об открытии файла делалась сразу при его открытии?


Сообщение отредактировал ArkaIIIa - Среда, 05.08.2015, 11:11
 
Ответить
СообщениеKSV
Обратил внимание, что информация в лог добавляется только при закрытии Файла_1. Можно ли, чтобы запись об открытии файла делалась сразу при его открытии?

Автор - ArkaIIIa
Дата добавления - 05.08.2015 в 11:10
KSV Дата: Среда, 05.08.2015, 11:25 | Сообщение № 9
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
последней строкой в Private Sub Workbook_Open() добавьте строку: [vba]
Код
wbLog.Save
[/vba]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщениепоследней строкой в Private Sub Workbook_Open() добавьте строку: [vba]
Код
wbLog.Save
[/vba]

Автор - KSV
Дата добавления - 05.08.2015 в 11:25
ArkaIIIa Дата: Среда, 05.08.2015, 11:28 | Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация: 115 ±
Замечаний: 0% ±

2010
KSV
Очень здорово! Еще раз спасибо! hands
 
Ответить
СообщениеKSV
Очень здорово! Еще раз спасибо! hands

Автор - ArkaIIIa
Дата добавления - 05.08.2015 в 11:28
rosko Дата: Среда, 05.08.2015, 19:14 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 58
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Set App = New Application

Скажите, пожалуйста, что эта строка делает? она открывает книгу, название которой определяется ниже?
 
Ответить
Сообщение
Set App = New Application

Скажите, пожалуйста, что эта строка делает? она открывает книгу, название которой определяется ниже?

Автор - rosko
Дата добавления - 05.08.2015 в 19:14
AndreTM Дата: Среда, 05.08.2015, 23:17 | Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
что эта строка делает?

Она (и последующие) создает и запускает ещё один экземпляр приложения Excel, скрывает его окно (нам же не надо, чтобы юзер видел и мог поработать с лог-файлом, не так ли?), и затем уже, в этом "скрытом экземпляре" открывает лог и дописывает в него данные. При закрытии же текущей книги юзера - записывается и закрывается и лог-файл,а также производится закрытие дополнительного экземпляра приложения.


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщение
что эта строка делает?

Она (и последующие) создает и запускает ещё один экземпляр приложения Excel, скрывает его окно (нам же не надо, чтобы юзер видел и мог поработать с лог-файлом, не так ли?), и затем уже, в этом "скрытом экземпляре" открывает лог и дописывает в него данные. При закрытии же текущей книги юзера - записывается и закрывается и лог-файл,а также производится закрытие дополнительного экземпляра приложения.

Автор - AndreTM
Дата добавления - 05.08.2015 в 23:17
rosko Дата: Четверг, 06.08.2015, 01:00 | Сообщение № 13
Группа: Пользователи
Ранг: Участник
Сообщений: 58
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
AndreTM, Спасибо за подробный ответ!
 
Ответить
СообщениеAndreTM, Спасибо за подробный ответ!

Автор - rosko
Дата добавления - 06.08.2015 в 01:00
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Логирование входа-выхода из файла (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!