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

Вход

Регистрация

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

 

= Мир MS Excel/Как узнать кто работает с файлом с общим доступом? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как узнать кто работает с файлом с общим доступом? (Макросы/Sub)
Как узнать кто работает с файлом с общим доступом?
Michael_S Дата: Понедельник, 31.10.2016, 19:16 | Сообщение № 1
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Всем Привет!
По сути весь вопрос в названии.
Имеем файл в общем доступе - Вася, Петя, Катя, Маша...
Как можно узнать, кто именно правит файл в данный момент? В этом же файле.
 
Ответить
СообщениеВсем Привет!
По сути весь вопрос в названии.
Имеем файл в общем доступе - Вася, Петя, Катя, Маша...
Как можно узнать, кто именно правит файл в данный момент? В этом же файле.

Автор - Michael_S
Дата добавления - 31.10.2016 в 19:16
krosav4ig Дата: Понедельник, 31.10.2016, 20:04 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 2346
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте
наверно как-то так
[vba]
Код
Sub dd()
    Dim wb As Workbook, uSt(), i&
    Set wb = Application.Workbooks("shared.xlsx")
    uSt = wb.UserStatus
    If UBound(uSt) < 2 Then Exit Sub
    For i = 1 To UBound(uSt)
        If uSt(i, 1) <> Application.UserName Then
            Debug.Print "пользователь " & uSt(i, 1) & " открыл книгу " & Format(uSt(i, 2), "dd.MM.yyyy hh:mm")
        End If
    Next
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеЗдравствуйте
наверно как-то так
[vba]
Код
Sub dd()
    Dim wb As Workbook, uSt(), i&
    Set wb = Application.Workbooks("shared.xlsx")
    uSt = wb.UserStatus
    If UBound(uSt) < 2 Then Exit Sub
    For i = 1 To UBound(uSt)
        If uSt(i, 1) <> Application.UserName Then
            Debug.Print "пользователь " & uSt(i, 1) & " открыл книгу " & Format(uSt(i, 2), "dd.MM.yyyy hh:mm")
        End If
    Next
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 31.10.2016 в 20:04
Michael_S Дата: Понедельник, 31.10.2016, 21:03 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Спасибо, но ошибка на строчке [vba]
Код
Set wb = Application.Workbooks("shared.xlsx")
[/vba]
shared.xlsx - это что за книга?


Сообщение отредактировал Michael_S - Понедельник, 31.10.2016, 21:06
 
Ответить
СообщениеСпасибо, но ошибка на строчке [vba]
Код
Set wb = Application.Workbooks("shared.xlsx")
[/vba]
shared.xlsx - это что за книга?

Автор - Michael_S
Дата добавления - 31.10.2016 в 21:03
Roman777 Дата: Понедельник, 31.10.2016, 21:34 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Michael_S, вероятно, расшаренная (с общим доступом).


Много чего не знаю!!!!
 
Ответить
СообщениеMichael_S, вероятно, расшаренная (с общим доступом).

Автор - Roman777
Дата добавления - 31.10.2016 в 21:34
krosav4ig Дата: Понедельник, 31.10.2016, 21:52 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 2346
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
shared.xlsx - это что за книга

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


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Понедельник, 31.10.2016, 21:53
 
Ответить
Сообщение
shared.xlsx - это что за книга

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

Автор - krosav4ig
Дата добавления - 31.10.2016 в 21:52
Michael_S Дата: Вторник, 01.11.2016, 11:29 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Что я делаю не так?
По нажатию кнопки в А1 должно быть имя пользователя
К сообщению приложен файл: 5347863.xlsm (23.1 Kb)
 
Ответить
СообщениеЧто я делаю не так?
По нажатию кнопки в А1 должно быть имя пользователя

Автор - Michael_S
Дата добавления - 01.11.2016 в 11:29
Manyasha Дата: Вторник, 01.11.2016, 12:32 | Сообщение № 7
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Michael_S, здравствуйте. Макрос рассчитан на то, чтобы выводить пользователей, кроме текущего, т.е. всех, кроме Вас.
Попробуйте закомментировать строчки с проверкой на количество пользователей и на имя пользователя:
[vba]
Код
Sub dd()
' Узнать имя пользователя
    Dim wb As Workbook, uSt(), i&
    Set wb = ThisWorkbook
    uSt = wb.UserStatus
'    If UBound(uSt) < 2 Then Exit Sub
    For i = 1 To UBound(uSt)
'        If uSt(i, 1) <> Application.UserName Then
            Cells(i, 1) = "пользователь " & uSt(i, 1) & " открыл книгу " & Format(uSt(i, 2), "dd.MM.yyyy hh:mm")
'        End If
    Next
End Sub
[/vba]
К сообщению приложен файл: 7262383.xlsm (21.9 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеMichael_S, здравствуйте. Макрос рассчитан на то, чтобы выводить пользователей, кроме текущего, т.е. всех, кроме Вас.
Попробуйте закомментировать строчки с проверкой на количество пользователей и на имя пользователя:
[vba]
Код
Sub dd()
' Узнать имя пользователя
    Dim wb As Workbook, uSt(), i&
    Set wb = ThisWorkbook
    uSt = wb.UserStatus
'    If UBound(uSt) < 2 Then Exit Sub
    For i = 1 To UBound(uSt)
'        If uSt(i, 1) <> Application.UserName Then
            Cells(i, 1) = "пользователь " & uSt(i, 1) & " открыл книгу " & Format(uSt(i, 2), "dd.MM.yyyy hh:mm")
'        End If
    Next
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 01.11.2016 в 12:32
Michael_S Дата: Вторник, 01.11.2016, 12:50 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Manyasha, Спасибо! hands

[p.s.]А как вам удалось сохранить изменения в VВA?
У меня не сохраняет, приходится каждый раз создавать новую книгу
Разобрался
[/p.s.]


Сообщение отредактировал Michael_S - Вторник, 01.11.2016, 13:38
 
Ответить
СообщениеManyasha, Спасибо! hands

[p.s.]А как вам удалось сохранить изменения в VВA?
У меня не сохраняет, приходится каждый раз создавать новую книгу
Разобрался
[/p.s.]

Автор - Michael_S
Дата добавления - 01.11.2016 в 12:50
Alex_ST Дата: Среда, 02.11.2016, 09:46 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3199
Репутация: 606 ±
Замечаний: 0% ±

2003
Михаил, к сожалению это не решит проблему идентификации пользователей книги, размещённой в общем доступе.
Ведь получаете Вы не уникальные в Вашей LAN имена компьютеров, а имена пользователей Офиса, задаваемые при его установке. А они вовсе никак не связаны с именами компьютеров и могут быть любыми.
У нас IT-шники вообще не парятся с этим и всем дают имена User.
А потом кто хочет и может сам это имя сменить на какое угодно.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеМихаил, к сожалению это не решит проблему идентификации пользователей книги, размещённой в общем доступе.
Ведь получаете Вы не уникальные в Вашей LAN имена компьютеров, а имена пользователей Офиса, задаваемые при его установке. А они вовсе никак не связаны с именами компьютеров и могут быть любыми.
У нас IT-шники вообще не парятся с этим и всем дают имена User.
А потом кто хочет и может сам это имя сменить на какое угодно.

Автор - Alex_ST
Дата добавления - 02.11.2016 в 09:46
Michael_S Дата: Среда, 02.11.2016, 10:23 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Леш, это уже проблемы пользователя. Ему надо отметить, кто сделал запись - пусть сам думает, как их различать.
 
Ответить
СообщениеЛеш, это уже проблемы пользователя. Ему надо отметить, кто сделал запись - пусть сам думает, как их различать.

Автор - Michael_S
Дата добавления - 02.11.2016 в 10:23
Alex_ST Дата: Среда, 02.11.2016, 21:51 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3199
Репутация: 606 ±
Замечаний: 0% ±

2003
Ну так по сетевому-то имени можно однозначно комп в домене вычислить, а по имени пользователя Офиса - нет.
А получить сетевое имя ничуть не сложнее:[vba]
Код
Private Sub Net_UserName()
Debug.Print CreateObject("Wscript.Network").UserName
End Sub
[/vba]



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеНу так по сетевому-то имени можно однозначно комп в домене вычислить, а по имени пользователя Офиса - нет.
А получить сетевое имя ничуть не сложнее:[vba]
Код
Private Sub Net_UserName()
Debug.Print CreateObject("Wscript.Network").UserName
End Sub
[/vba]

Автор - Alex_ST
Дата добавления - 02.11.2016 в 21:51
Michael_S Дата: Среда, 02.11.2016, 21:55 | Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

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

Автор - Michael_S
Дата добавления - 02.11.2016 в 21:55
Alex_ST Дата: Среда, 02.11.2016, 22:03 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3199
Репутация: 606 ±
Замечаний: 0% ±

2003
На выходе - это где?
В моём примере сетевое имя юзверга просто выводится для наглядности в окно Immediate
:'(
Ой, блин!
Я же совсем оплошал. На компе ты сможешь только своё сетевое имя узнать, а не имена тех, кто в сети юзает файл.
Прошу прощения. Действительно, только через .UserStatus можно узнать то, что тебе нужно.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеНа выходе - это где?
В моём примере сетевое имя юзверга просто выводится для наглядности в окно Immediate
:'(
Ой, блин!
Я же совсем оплошал. На компе ты сможешь только своё сетевое имя узнать, а не имена тех, кто в сети юзает файл.
Прошу прощения. Действительно, только через .UserStatus можно узнать то, что тебе нужно.

Автор - Alex_ST
Дата добавления - 02.11.2016 в 22:03
Александр7034 Дата: Пятница, 17.02.2023, 09:16 | Сообщение № 14
Группа: Пользователи
Ранг: Участник
Сообщений: 58
Репутация: 0 ±
Замечаний: 40% ±

Ну так по сетевому-то имени можно однозначно комп в домене вычислить, а по имени пользователя Офиса - нет.
А получить сетевое имя ничуть не сложнее:
Private Sub Net_UserName()
Debug.Print CreateObject("Wscript.Network").UserName
End Sub

А как применить этот код?
Суть в том что, на сетевом диске документ. К нему есть общий доступ у пользователей находящихся в домене. Колонка F5:F100 оставлена для комментариев. Как в соседних с ней колонках E5:E100 фиксировать время дату написавшего комментарий? А в D5:D100 его сетевое имя.


Сообщение отредактировал Александр7034 - Пятница, 17.02.2023, 09:23
 
Ответить
Сообщение
Ну так по сетевому-то имени можно однозначно комп в домене вычислить, а по имени пользователя Офиса - нет.
А получить сетевое имя ничуть не сложнее:
Private Sub Net_UserName()
Debug.Print CreateObject("Wscript.Network").UserName
End Sub

А как применить этот код?
Суть в том что, на сетевом диске документ. К нему есть общий доступ у пользователей находящихся в домене. Колонка F5:F100 оставлена для комментариев. Как в соседних с ней колонках E5:E100 фиксировать время дату написавшего комментарий? А в D5:D100 его сетевое имя.

Автор - Александр7034
Дата добавления - 17.02.2023 в 09:16
bigor Дата: Пятница, 17.02.2023, 16:31 | Сообщение № 15
Группа: Проверенные
Ранг: Старожил
Сообщений: 1075
Репутация: 205 ±
Замечаний: 0% ±

нет
Цитата Александр7034, 17.02.2023 в 09:16, в сообщении № 14 ()
А как применить этот код?

Ой, блин!
Я же совсем оплошал. На компе ты сможешь только своё сетевое имя узнать

скорее всего никак, будет выводится login пользователя под которым произведен вход на рабочую станцию с файлом
 
Ответить
Сообщение
Цитата Александр7034, 17.02.2023 в 09:16, в сообщении № 14 ()
А как применить этот код?

Ой, блин!
Я же совсем оплошал. На компе ты сможешь только своё сетевое имя узнать

скорее всего никак, будет выводится login пользователя под которым произведен вход на рабочую станцию с файлом

Автор - bigor
Дата добавления - 17.02.2023 в 16:31
wehy Дата: Воскресенье, 19.02.2023, 13:16 | Сообщение № 16
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Пусть
Цитата Александр7034, 17.02.2023 в 09:16, в сообщении № 14 ()
скорее всего никак, будет выводится login пользователя под которым произведен вход на рабочую станцию с файлом

В принципе зная логин можно сделать автоподмену на реальное имя. Подскажите, как в отдельный столбец вписать дату а в другой логин?


Сообщение отредактировал wehy - Воскресенье, 19.02.2023, 13:35
 
Ответить
СообщениеПусть
Цитата Александр7034, 17.02.2023 в 09:16, в сообщении № 14 ()
скорее всего никак, будет выводится login пользователя под которым произведен вход на рабочую станцию с файлом

В принципе зная логин можно сделать автоподмену на реальное имя. Подскажите, как в отдельный столбец вписать дату а в другой логин?

Автор - wehy
Дата добавления - 19.02.2023 в 13:16
bigor Дата: Воскресенье, 19.02.2023, 22:24 | Сообщение № 17
Группа: Проверенные
Ранг: Старожил
Сообщений: 1075
Репутация: 205 ±
Замечаний: 0% ±

нет
зная логин можно сделать автоподмену на реальное имя

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

вы не поняли. логин будет того, под чей учеткой вошли на комп на котором находится таблица, т.е. один и тот же.

Автор - bigor
Дата добавления - 19.02.2023 в 22:24
wehy Дата: Понедельник, 20.02.2023, 00:30 | Сообщение № 18
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

вы не поняли. логин будет того, под чей учеткой вошли на комп на котором находится таблица, т.е. один и тот же.

Имелось ввиду вытащит код сетевое имя, что то вроде IvanovPC_sklad. Заранее можно будет вписать таблицу с реальными именами, которые всем будут понятны, нежели сетевой логин. Ну а потом функцией ВПР проставятся реальные имена вместо логинов.
 
Ответить
Сообщение
вы не поняли. логин будет того, под чей учеткой вошли на комп на котором находится таблица, т.е. один и тот же.

Имелось ввиду вытащит код сетевое имя, что то вроде IvanovPC_sklad. Заранее можно будет вписать таблицу с реальными именами, которые всем будут понятны, нежели сетевой логин. Ну а потом функцией ВПР проставятся реальные имена вместо логинов.

Автор - wehy
Дата добавления - 20.02.2023 в 00:30
Александр7034 Дата: Понедельник, 20.02.2023, 11:08 | Сообщение № 19
Группа: Пользователи
Ранг: Участник
Сообщений: 58
Репутация: 0 ±
Замечаний: 40% ±

Проверьте пожалуйста. Наваял код не понимая половины, просто подсматривая как в других местах сделали что то схожее. Вроде работает, но может пропустил подводные камни какие, или в цикле что то останется. Если написать в колонке F2:F9 то в соседних ячейках слева появится сетевое имя отписавшего и время комментария.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
username2 = CreateObject("WScript.Network").UserName
If Not Intersect(Target, Range("F2:F9")) Is Nothing Then
Target.Offset(, -1) = Now
Target.Offset(, -2) = username2
End If
End Sub
[/vba]

ps/ Оказалось есть проблемы, если выделить несколько колонок и жать delete для удаления написанного то имя и дата смещаются еще левее или же может выскочить ошибка.


Сообщение отредактировал Александр7034 - Понедельник, 20.02.2023, 11:20
 
Ответить
СообщениеПроверьте пожалуйста. Наваял код не понимая половины, просто подсматривая как в других местах сделали что то схожее. Вроде работает, но может пропустил подводные камни какие, или в цикле что то останется. Если написать в колонке F2:F9 то в соседних ячейках слева появится сетевое имя отписавшего и время комментария.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
username2 = CreateObject("WScript.Network").UserName
If Not Intersect(Target, Range("F2:F9")) Is Nothing Then
Target.Offset(, -1) = Now
Target.Offset(, -2) = username2
End If
End Sub
[/vba]

ps/ Оказалось есть проблемы, если выделить несколько колонок и жать delete для удаления написанного то имя и дата смещаются еще левее или же может выскочить ошибка.

Автор - Александр7034
Дата добавления - 20.02.2023 в 11:08
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как узнать кто работает с файлом с общим доступом? (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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