Страницы: 1
RSS
Имя другого пользователя, Получить имя другого пользователя, занявшего файл
 
Добрый день.
Знаю, похожие темы поднимались, я старательно изучал что смог найти. И не только на этом замечательном сайте.
Задача состоит в том, чтобы получить имя другого пользователя, открывшего в режиме редактирования книгу excel, расположенную на сетевом диске. Все изученные мной примеры выводят имя пользователя запустившего макрос, т.е. меня самого. Это вообще возможно? Наверное да, ведь в сообщении о том что файл занят пишется кем он занят, правда иногда пишется имя пользователя, а иногда - другой пользователь. Смысл в том, что макрос определения имени надо запускать не из того файла который бывает занят, а из другого.
 
cuprum, здравия. Повесьте на событие открытия книги макрос, который будет вести лог, допустим, время, дата и кто открыл книгу. После фиксации этих параметров сразу же сохраняйте книгу. Ну, а после, думаю, не составит труда получить эту информацию.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, спасибо. Извиняюсь если я не правильно понял, но ведь это решение так же из тех, где макрос должен находится в контролируемом файле. Я же хотел вести лог с помощью макроса запускаемого из другого файла. Вот позаимствовал, и попытался адаптировать под себя, но как я писал, в качестве пользователя записывает меня самого.
 
cuprum, файл не смотрел. А почему не делать так, как предложил ранее?

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Нельзя узнать кто открыл файл с другого ПК. Excel это делает для книг в общем доступе путем сохранения информации о пользователях в самом файле. При этом не всегда удачно он определяет пользователя, которым занят файл.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
JayBhagavan написал: А почему не делать так, как предложил ранее?
Возможно я не понял как это делается, в макросах я ноль. По умолчанию макросы не разрешены, и чтобы он сработал, надо чтобы тот, кто занял файл, разрешил его запуск. Поэтому я и хотел проверять из своего файла.
Цитата
The_Prist написал: Нельзя узнать кто открыл файл с другого ПК.
Если это действительно так, то тему можно закрывать, жаль.
 
Цитата
cuprum написал:
чтобы он сработал, надо чтобы тот, кто занял файл, разрешил его запуск
Как запустить файл с включенными макросами?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, да, я это читал. Файл для общего пользования, пользоваться им приходится очень часто и многим, не хочется создавать дополнительные затруднения при открытии файла.
 
Здравствуйте, не могу понять почему не пользуются встроенными функциями(За эту идею меня уже не раз проигнорили, не понимаю почему(().
По идеи оно более чем подходит для Вас.
В файле во вложении поизменяйте значения, а потом нажмите на вкладке "Рецензирование"-->Блок "Изменения"-->Кнопка "Исправления"-->"Выделить исправления"
Во всплывшем окне снимаете все галочки кроме "Отслеживать исправления (книга становится общей).
И нажимаете ОК.
Подходит такой вариант? Если нет, отпишите почему? ((
 
Xapa6apga, общая книга имеет ряд ограничений, не подходит, это во первых, а во вторых, может я плохо объясняю, я не хочу вносить какие-либо изменения в отслеживаемый файл, я спрашиваю о возможности отслеживать из другого файла, кем и когда он занят. А вариантов логирования изменений в самом файле по инету полно, я потратил не один день рассматривая их.
 
У меня когда-то была похожая задача на работе. Нужно было понять, кто открывает определенную книгу. Сделать это оказалось не так сложно.
Если вы работаете в корпоративной сети, то здесь должно быть просто. Привязываете следующую процедуру к событию открытия книги и ждете наполнения лог файла.
Код
open "somefile.txt" for append as #1
print #1, environ("username") + " " + cstr(date)
close


Должно выполняться несколько условий.
1. "somefile.txt" находится на сетевом диске и доступен для редактирования всеми пользователями искомого файла.
2. Имя пользователя будет опознаваться, если оно задано в аккаунте (в корпоративной сети обычно так и есть).
3. Файл должен открываться с включенными макросами.

При желании то же самое можно сделать, например, для закрытия файла.
Стоит отметить, что у каждого метода есть свои недостатки, я не стал писать код с разного рода исключениями и усложнениями, потому что часто написанного достаточно.
Удачи!
С уважением,
Федор/Все_просто
 
Цитата
cuprum написал: Поэтому я и хотел проверять из своего файла
Цитата
Все_просто написал: Привязываете следующую процедуру к событию открытия книги
Все_просто, почитали бы тему - подобные варианты уже предлагались и не подходят. У автора скоро оскомина от таких советов набъется  :D
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Доброе время суток
Если у вас есть права на том сервере, то можно получить имя пользователей, открывших файл таким макросом
Код
Public Sub WhoOpen()
On Error Resume Next
    Dim nextItem As Object
    For Each nextItem In GetObject("WinNT://ServerName_Or_IP_Address/LanmanServer").Resources
        If InStr(1, nextItem.Path, "bookname.xlsx", 1) > 0 Then
            Debug.Print nextItem.User
        End If
    Next
End Sub


С наступающими!
 
ОФФ
The_Prist, прошу прощения. Только сейчас прочитал внимательнее, в чем состоит задача. Увидел знакомую задачу, подумал, что может пригодиться.
С уважением,
Федор/Все_просто
 
Андрей VG, интересный вариант. К сожалению у меня нет админских прав (если они нужны), либо я неправильно указываю пути. Не выводится никакого сообщения, хотя точно знаю что в данный момент файл занят.
 
Там нужен доступ к управлению сервером. на котором расположен файл. Если доступа нет - вариантов вообще никаких.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Видимо для меня вариантов нет. Закрывайте тему.
Всем откликнувшимся большое спасибо.
 
Увы, нужны соответствующие права, как и писал выше.
У меня есть права на одном из серверов конторы - там показывает. На других - я обычный пользователь - соответственно, выдаёт ошибку.
 
.
Изменено: Константин - 08.01.2024 01:00:09
Страницы: 1
Наверх