Как выяснить, открыт ли кем-нибудь файл с общим доступом? |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Имеется шара в сети с excel файлом. Когда в нем кто то работает у другого пользователя появляется диалоговое окном «Файл занят и ФИО пользователя». Но временами просто выводит что «файл занят другим пользователем»
Как можно включить что бы постоянно отображалось ФИО работающего с файлом?
Все действие в доменной среде. Доступ к папке имеет 12 пользователей на чтение и запись.
-
Вопрос заданболее трёх лет назад
-
10943 просмотра
Возможно, ФИО показывает у тех, кто заполнил это поле в параметрах.
Заставьте всех пользователей внести ФИО в параметрах и будете знать каждого занимающего файл.
Пригласить эксперта
На сервере с вашей шарой запускаешь compmgmt.msc > Общие папки > Открытые файлы и смотришь кто работает с файлом. Также можно воспользоваться консольной утилиты Openfiles
-
Показать ещё
Загружается…
15 апр. 2023, в 23:37
1000 руб./в час
15 апр. 2023, в 23:24
25000 руб./за проект
15 апр. 2023, в 21:40
2000 руб./за проект
Минуточку внимания
Представьте себе книгу Excel с очень важными для вас данными, сохраненную на общем сетевом диске компании, куда имеет доступ куча народу. Одним совсем не прекрасным утром вы открываете этот файл и обнаруживаете, что внутри кто-то поиграл в аль-каиду: формулы поломаны, данные стерты, дизайн нарушен. Поскольку вы опытный пользователь, то у вас, конечно же, была резервная копия этого важного документа (была же, правда?) и данные вы восстановите, но чисто из спортивного интереса хотелось бы все же узнать — КТО ЭТО СДЕЛАЛ?!
Давайте попробуем решить эту задачу. Итак, нам нужно:
- фиксировать на отдельном (скрытом) листе имя пользователя, открывшего файл;
- фиксировать там же дату-время открытия и закрытия файла;
- по возможности усложнить взлом или обход такой защиты.
Поехали…
Этап 1. Создаем «Лог»
Добавим в нашу книгу новый лист, куда будет записываться информация о всех пользователях и назовем его, например, Лог. На нем создадим простую шапку будущего журнала учета посетителей:
Этап 2. Макросы фиксации входа-выхода
Теперь добавим макросы для записи на лист Лог даты-времени и имен пользователей при открытии и закрытии книги. Для этого нужно открыть редактор Visual Basic с помощью сочетания Alt+F11 или с помощью кнопки Visual Basic на вкладке Разработчик (Developer) и найти в левом верхнем углу панель Project (если она не отображается, то включить ее можно сочетанием клавиш Ctrl+R):
Двойным щелчком откройте модуль ЭтаКнига (ThisWorkbook) и вставьте туда пару наших макросов для обработки событий открытия и закрытия книги:
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
В первом приближении все уже должно работать. Попробуйте открыть-закрыть этот файл пару раз и убедитесь, что на лист Лог попадает ваше имя пользователя (логин входа в Windows) и дата-время:
Этап 3. Улучшаем надежность
Можно было бы скрыть лист Лог и на этом остановиться, но есть одно «но»: если у пользователя, который открывает нашу книгу, макросы разрешены по умолчанию либо он сам их разрешает, нажав в окне предупреждения на кнопку Включить содержимое, то все в порядке:
Но что если пользователь не разрешит выполнение макросов или они отключены у него по умолчанию? Тогда наши макросы отслеживания выполняться не будут и фиксации имени и даты не произойдет Как же заставить пользователя разрешить использование макросов?
Чтобы обойти эту проблемку воспользуемся небольшой тактической хитростью. Добавьте в нашу книгу еще один чистый лист, назовите его Предупреждение и вставьте на него следующий текст:
Суть в том, чтобы по умолчанию скрыть в книге все листы кроме этого, а рабочие листы с данными отображать с помощью специального макроса. Если пользователь не разрешил выполнение макросов, то он увидит в книге только один лист с предупреждением. Если же макросы разрешены, то наш макрос обработки события открытия книги скроет лист с предупреждением и отобразит листы с данными. Чтобы пользователь сам не отобразил их — используем суперскрытие вместо обычного скрытия листов (параметр xlSheetVeryHidden вместо обычного False).
Чтобы реализовать все описанное, слегка изменим наши процедуры в модуле ЭтаКнига (ThisWorkbook):
Private Sub Workbook_BeforeClose(Cancel As Boolean) 'ищем последнюю занятую строчку в логах lastrow = Worksheets("Лог").Range("A60000").End(xlUp).Row 'заносим дату-время выхода из файла If lastrow > 1 Then Worksheets("Лог").Cells(lastrow, 3) = Now 'скрываем все листы, кроме листа ПРЕДУПРЕЖДЕНИЕ Worksheets("Предупреждение").Visible = True For Each sh In ActiveWorkbook.Worksheets If sh.Name = "Предупреждение" Then sh.Visible = True Else sh.Visible = xlSheetVeryHidden End If Next sh 'сохраняемся перед выходом 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 'отображаем все листы For Each sh In ActiveWorkbook.Worksheets sh.Visible = True Next sh 'скрываем листы ПРЕДУПРЕЖДЕНИЕ и ЛОГ Worksheets("Предупреждение").Visible = xlSheetVeryHidden Worksheets("Лог").Visible = xlSheetVeryHidden End Sub
Чтобы просмотреть скрытый Лог откройте редактор VisualBasic (Alt+F11), выделите лист на панели Project и измените его видимость на панели Properties, используя свойство Visible:
Если пользователи настолько продвинутые, что знают про суперскрытые листы и могут их отобразить через редактор Visual Basic или нарушить работу наших макросов, то можно дополнительно поставить пароль на просмотр и изменение макросов. Для этого щелкните правой кнопкой мыши по имени файла в панели Project (строка VBAProject (blackbox.xls)), выберите команду VBA Project Properties и включите флажок Lock project for viewing и задайте пароль на вкладке Protection:
Теперь точно никто не уйдет безнаказанным. Большой Брат следит за тобой!
Ссылки по теме
- Суперскрытый лист
- Выборочное отображение листов отдельным пользователям
- 4 способа защиты данных в Microsoft Excel
- Remove From My Forums
-
Вопрос
-
в VBScript пытаюсь создать подключение к excel файлу. но эта книга лежит на сервере, иногда эта книга бывает занята другим пользователем. как
я могу получить имя пользователя кто занял данную таблицу? уведомление во вложении. Имя пользователя как зарегистрирован в officeя могу читать данные о пользователях через aplication.userstatus. но для этого она должна быть открыта для редактирования нескольким пользователям.
Как можно узнать кем занята книга для редактирования
Сообщение от IvanOK
чем txt не подходит? (ответ можно)
удобней будет в экселе, т.к. в .тхт при внесении длинных изменений строка двигается.
например:
Лист1 $D$8 123 Admin
Лист2 $D$8 12312312312312312312312313 Admin
и потом, если сразу .xls сохранять, то можно будет фильтровать, анализировать итд. ведь я полагаю, что записи об изменениях будут вносится в одни и те же столбцы!
подскажите пожалуйста, как переконвертировать в .xls файл *если б еще добавить критерий «дата изменения» цены б не было!
Сообщение от IvanOK
недолжно… значит что то не так сделали в коде
Type mismatch выдает в дебаггере VBA. но это при выделении групп ячеек, и внесении данных как массив (ctrl+enter).
видимо так и задумано, ведь он регистрирует только те изменения, которые были внесены в !одну! ячейку (если я правильно понял).
Добавлено через 7 минут
вообщем, файл .тхт перестает записывать внесенные изменения если будет баг в макросе, даже после дебага получается, если какой нибудь криворукий юзер собьет макрос, то это бесполезно ..
Представьте себе книгу Excel с очень важными для вас данными, сохраненную на общем сетевом диске компании, куда имеет доступ куча народу. Одним совсем не прекрасным утром вы открываете этот файл и обнаруживаете, что внутри кто-то поиграл в аль-каиду: формулы поломаны, данные стерты, дизайн нарушен. Поскольку вы опытный пользователь, то у вас, конечно же, была резервная копия этого важного документа (была же, правда?) и данные вы восстановите, но чисто из спортивного интереса хотелось бы все же узнать — КТО ЭТО СДЕЛАЛ?!
Давайте попробуем решить эту задачу. Итак, нам нужно:
- фиксировать на отдельном (скрытом) листе имя пользователя, открывшего файл;
- фиксировать там же дату-время открытия и закрытия файла;
- по возможности усложнить взлом или обход такой защиты.
Этап 1. Создаем «Лог»
Добавим в нашу книгу новый лист, куда будет записываться информация о всех пользователях и назовем его, например, Лог. На нем создадим простую шапку будущего журнала учета посетителей:
Этап 2. Макросы фиксации входа-выхода
Теперь добавим макросы для записи на лист Лог даты-времени и имен пользователей при открытии и закрытии книги. Для этого нужно открыть редактор Visual Basic с помощью сочетания Alt+F11 или с помощью кнопки Visual Basic на вкладке Разработчик (Developer) и найти в левом верхнем углу панель Project (если она не отображается, то включить ее можно сочетанием клавиш Ctrl+R):
Двойным щелчком откройте модуль ЭтаКнига (ThisWorkbook) и вставьте туда пару наших макросов для обработки событий открытия и закрытия книги:
В первом приближении все уже должно работать. Попробуйте открыть-закрыть этот файл пару раз и убедитесь, что на лист Лог попадает ваше имя пользователя (логин входа в Windows) и дата-время:
Этап 3. Улучшаем надежность
Можно было бы скрыть лист Лог и на этом остановиться, но есть одно «но»: если у пользователя, который открывает нашу книгу, макросы разрешены по умолчанию либо он сам их разрешает, нажав в окне предупреждения на кнопку Включить содержимое, то все в порядке:
Но что если пользователь не разрешит выполнение макросов или они отключены у него по умолчанию? Тогда наши макросы отслеживания выполняться не будут и фиксации имени и даты не произойдет 🙁 Как же заставить пользователя разрешить использование макросов?
Чтобы обойти эту проблемку воспользуемся небольшой тактической хитростью. Добавьте в нашу книгу еще один чистый лист, назовите его Предупреждение и вставьте на него следующий текст:
Суть в том, чтобы по умолчанию скрыть в книге все листы кроме этого, а рабочие листы с данными отображать с помощью специального макроса. Если пользователь не разрешил выполнение макросов, то он увидит в книге только один лист с предупреждением. Если же макросы разрешены, то наш макрос обработки события открытия книги скроет лист с предупреждением и отобразит листы с данными. Чтобы пользователь сам не отобразил их — используем суперскрытие вместо обычного скрытия листов (параметр xlSheetVeryHidden вместо обычного False).
Чтобы реализовать все описанное, слегка изменим наши процедуры в модуле ЭтаКнига (ThisWorkbook):
Чтобы просмотреть скрытый Лог откройте редактор VisualBasic (Alt+F11), выделите лист на панели Project и измените его видимость на панели Properties, используя свойство Visible:
Если пользователи настолько продвинутые, что знают про суперскрытые листы и могут их отобразить через редактор Visual Basic или нарушить работу наших макросов, то можно дополнительно поставить пароль на просмотр и изменение макросов. Для этого щелкните правой кнопкой мыши по имени файла в панели Project (строка VBAProject (blackbox.xls)), выберите команду VBA Project Properties и включите флажок Lock project for viewing и задайте пароль на вкладке Protection:
Теперь точно никто не уйдет безнаказанным. Большой Брат следит за тобой! 😉
Актуально только для Клиента Google Диска
|
Чтобы не запутаться в версиях файла Microsoft Word, Excel или PowerPoint, над которым работают несколько человек, в Google Диск для компьютеров вы можете отслеживать, кто редактирует файл в настоящий момент.
|
Как узнать, кто редактирует файл Microsoft Office
- В приложении «Диск для компьютеров» откройте файл Office, к которому предоставлен доступ, с помощью Word, Excel или PowerPoint.
В правом нижнем углу страницы появится текущий статус.
- В зависимости от статуса будет показан один из следующих вариантов действий:
- Можно редактировать. Никто не редактирует файл, поэтому вы можете вносить изменения.
- Подождите, кто-то уже редактирует документ. Этот статус означает, что сейчас с файлом работает другой пользователь.
- Чтобы получить уведомление о том, что пользователь завершил работу, установите флажок Сообщить мне, когда с файлом можно будет работать.
- Чтобы посмотреть подробные сведения о том, кто редактирует или просматривает файл, нажмите на пользователя в списке.
- Создана новая версия. Этот статус означает, что кто-то создал новую версию документа. Чтобы увидеть новую версию, нажмите Обновить.
Как объединить версии
Если кто-то сохранит новую версию файла, который вы редактируете, вы получите уведомление.
Вы сможете сохранить свою версию как копию или вручную объединить вашу и последнюю сохраненную версию файла. Получив уведомление:
- Нажмите Сравнить версии.
- Скопируйте изменения из своей версии (слева) в последнюю версию (справа).
- Закончив, нажмите Сохранить для последней версии файла.
Несохраненная версия (слева) будет удалена.
Как изменить системные разрешения на компьютере Mac
Как отключить функцию совместного редактирования в реальном времени
Google, Google Workspace, а также другие связанные знаки и логотипы являются товарными знаками компании Google LLC. Все другие названия компаний и продуктов являются товарными знаками соответствующих компаний.
Эта информация оказалась полезной?
Как можно улучшить эту статью?
как увидеть кто работает в документе
Автор Алина, 28.11.2011, 16:16
« назад — далее »
документ в общем доступе на сервере (офис 2007). При попытке открыть документ система пишет, что он уже кем-то занят.В предыдущей версии указывался конкретный пользователь, а в 2007 не указывается. Можно как-то определить пользователя?
и в 2007 пишется и в 2010
нет не пишется.Я бы тогда не стала спрашивать
Цитата: Алина от 28.11.2011, 16:50
нет не пишется.Я бы тогда не стала спрашивать
Форма не менялась. Движок аутентификации тоже. Логин юзера обязан выводится (у меня выводится).
Приложите скрин ошибки.
У меня нет ворда, приложите в Excel.
бывает такое, что пишется другой пользователь, но обычно после 2-го открытия файла пишется имя пользователя. если она задано
н хочет файл прикладываться
Доступные типы файлов: gif, jpg, png, rar, zip, 7z, bas, frm, cls, docx, xlsx, xls, xlt
Вам уже iron priest ответил:
Цитата: iron priest от 28.11.2011, 16:56
бывает такое, что пишется другой пользователь, но обычно после 2-го открытия файла пишется имя пользователя. если она задано
У меня, правда с первого раза определяется, но только в том случае, если у юзера есть ник.
странно. Специаьно попробовала несколько раз. Ник у нас у всех есть-нас 30 человек в управлении, поэтому очень важно видеть кого выгнать из файла))). Спасибо всем за помощь
бывает, что пишет, мол файл мною же и используется
Постоянно сталкиваемся в конторе с этой проблемой с тех пор как поставили оф2010. У всех корректно в параметрах заполнены поля ФИО, но, тем не менее, часто эксель отказывается их видеть и пишет фигню типа «Редактирование файла запрещено пользователем: «Другой пользователь» или «Файл заблокирован пользователем «ругой пользователь» Я не ошибся, пишет именно «РУГОЙ». Офис стоит лицензионный, не пиратский. В оф2007 точно не было такого «ругого», то есть создатели всё-таки как то «усовершенствовали» движок. Кроме того, нередко даже если файл ТОЧНО никем не открыт, что подтверждает администратор сервера, всё равно всплывают эти сообщения и файл не открывается в общем доступе.
Ничего подобного не было в офисе 2003
- Профессиональные приемы работы в Microsoft Excel
-
►
Обмен опытом -
►
Microsoft Excel -
►
как увидеть кто работает в документе