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

Вход

Регистрация

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

 

= Мир MS Excel/Получить имя учетной записи Microsoft office - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Получить имя учетной записи Microsoft office
EvgenyD Дата: Вторник, 01.09.2015, 15:10 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 74
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
Добрый день, уважаемые форумчане!
Никак не могу найти каким образом получить имя учетной записи Microsoft.
Именно той, которая указана в меню Файл->Учетная запись (блок "Сведения о пользователе")?
 
Ответить
СообщениеДобрый день, уважаемые форумчане!
Никак не могу найти каким образом получить имя учетной записи Microsoft.
Именно той, которая указана в меню Файл->Учетная запись (блок "Сведения о пользователе")?

Автор - EvgenyD
Дата добавления - 01.09.2015 в 15:10
Rioran Дата: Вторник, 01.09.2015, 15:29 | Сообщение № 2
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
EvgenyD, привет.

Оказалось неочевидно:

[vba]
Код
Application.UserName
[/vba]


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеEvgenyD, привет.

Оказалось неочевидно:

[vba]
Код
Application.UserName
[/vba]

Автор - Rioran
Дата добавления - 01.09.2015 в 15:29
_Boroda_ Дата: Вторник, 01.09.2015, 15:36 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Application.UserName
Дает имя пользователя.

А учетку можно так
[vba]
Код
Set SI_ = CreateObject("ADSystemInfo")
Set Un_ = GetObject("LDAP://" & SI_.UserName)
UZ_ = Un_.DisplayName
[/vba]
Это не мое, давно уже где-то нашел


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Application.UserName
Дает имя пользователя.

А учетку можно так
[vba]
Код
Set SI_ = CreateObject("ADSystemInfo")
Set Un_ = GetObject("LDAP://" & SI_.UserName)
UZ_ = Un_.DisplayName
[/vba]
Это не мое, давно уже где-то нашел

Автор - _Boroda_
Дата добавления - 01.09.2015 в 15:36
EvgenyD Дата: Вторник, 01.09.2015, 15:43 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 74
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
Rioran, это не выдает желаемого результата. Тут возможно есть еще важные моменты, которые надо было написать. Пользователи на Office 365 Buisness, соответственно у каждого свой логин microsoft - его то и нужно будет получить.
[vba]
Код
Application.UserName
[/vba] - выводит имя пользователя ПК
А мне нужно получить то, что на принтскрине в приложенном файле.
К сообщению приложен файл: 0769789.jpg (26.6 Kb)
 
Ответить
СообщениеRioran, это не выдает желаемого результата. Тут возможно есть еще важные моменты, которые надо было написать. Пользователи на Office 365 Buisness, соответственно у каждого свой логин microsoft - его то и нужно будет получить.
[vba]
Код
Application.UserName
[/vba] - выводит имя пользователя ПК
А мне нужно получить то, что на принтскрине в приложенном файле.

Автор - EvgenyD
Дата добавления - 01.09.2015 в 15:43
Rioran Дата: Вторник, 01.09.2015, 15:57 | Сообщение № 5
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
_Boroda_, EvgenyD, странно, потому что у меня выводит именно то, что отмечено на рисунке. Microsoft Office профессиональный плюс 2013.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
Сообщение_Boroda_, EvgenyD, странно, потому что у меня выводит именно то, что отмечено на рисунке. Microsoft Office профессиональный плюс 2013.

Автор - Rioran
Дата добавления - 01.09.2015 в 15:57
_Boroda_ Дата: Вторник, 01.09.2015, 16:06 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Роман, а они у тебя не совпадают ли? Посмотри, что у тебя написано в Файл - Параметры - Имя пользователя?


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеРоман, а они у тебя не совпадают ли? Посмотри, что у тебя написано в Файл - Параметры - Имя пользователя?

Автор - _Boroda_
Дата добавления - 01.09.2015 в 16:06
EvgenyD Дата: Вторник, 01.09.2015, 16:06 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 74
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
Rioran, возможно из-за office 365 такая разница. Нашел в реестре, попробую использовать.
 
Ответить
СообщениеRioran, возможно из-за office 365 такая разница. Нашел в реестре, попробую использовать.

Автор - EvgenyD
Дата добавления - 01.09.2015 в 16:06
Rioran Дата: Вторник, 01.09.2015, 16:13 | Сообщение № 8
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
_Boroda_, спасибо, ты прав, совпадают. Значит, у каждого приложения офиса есть возможность настроить отдельное имя пользователя.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
Сообщение_Boroda_, спасибо, ты прав, совпадают. Значит, у каждого приложения офиса есть возможность настроить отдельное имя пользователя.

Автор - Rioran
Дата добавления - 01.09.2015 в 16:13
EvgenyD Дата: Вторник, 01.09.2015, 16:16 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 74
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
_Boroda_, Ваш вариант на второй строке ошибается automation Error. Я в этом ничего не смыслю, но кажется ADSystemInfo будет работать только при наличии настроенной Active Directory.
 
Ответить
Сообщение_Boroda_, Ваш вариант на второй строке ошибается automation Error. Я в этом ничего не смыслю, но кажется ADSystemInfo будет работать только при наличии настроенной Active Directory.

Автор - EvgenyD
Дата добавления - 01.09.2015 в 16:16
_Boroda_ Дата: Вторник, 01.09.2015, 16:17 | Сообщение № 10
Группа: Админы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
у каждого приложения офиса есть возможность настроить отдельное имя пользователя.

Не-а. Они взаимосвязаны. Измени в Ворде и оно изменится в Excele.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
у каждого приложения офиса есть возможность настроить отдельное имя пользователя.

Не-а. Они взаимосвязаны. Измени в Ворде и оно изменится в Excele.

Автор - _Boroda_
Дата добавления - 01.09.2015 в 16:17
EvgenyD Дата: Вторник, 01.09.2015, 16:20 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 74
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
У меня эти сведения нашлись в ветке реестра:
HKEY_USERS\S-1-5-21-1838117663-2728108920-1439421766-1000\Software\Microsoft\Office\15.0\Common\Identity\Identities\dc7cdd78f0fa498e_OrgId
 
Ответить
СообщениеУ меня эти сведения нашлись в ветке реестра:
HKEY_USERS\S-1-5-21-1838117663-2728108920-1439421766-1000\Software\Microsoft\Office\15.0\Common\Identity\Identities\dc7cdd78f0fa498e_OrgId

Автор - EvgenyD
Дата добавления - 01.09.2015 в 16:20
_Boroda_ Дата: Вторник, 01.09.2015, 16:26 | Сообщение № 12
Группа: Админы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Посмотрите еще здесь, может, поможет
http://www.robvanderwoude.com/vbstech_network_names_user.php


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеПосмотрите еще здесь, может, поможет
http://www.robvanderwoude.com/vbstech_network_names_user.php

Автор - _Boroda_
Дата добавления - 01.09.2015 в 16:26
nilem Дата: Вторник, 01.09.2015, 20:09 | Сообщение № 13
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
не уверен, но вот это не подойдет?:
[vba]
Код
MsgBox Environ("UserName")
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениене уверен, но вот это не подойдет?:
[vba]
Код
MsgBox Environ("UserName")
[/vba]

Автор - nilem
Дата добавления - 01.09.2015 в 20:09
Manyasha Дата: Вторник, 01.09.2015, 21:28 | Сообщение № 14
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 899 ±
Замечаний: 0% ±

Excel 2010, 2016
Вот еще вариант (где нашла, уже не помню), вдруг подойдет:
[vba]
Код
Declare Function WNetGetUserA Lib "mpr.dll" (ByVal lpName As String, ByVal lpUserName As String, lpnLength As Long) As Long
[/vba][vba]
Код
Function GetUserName() As String
       Dim sUserNameBuff As String * 255
       sUserNameBuff = Space(255)
       Call WNetGetUserA(vbNullString, sUserNameBuff, 255&)
       GetUserName = Left$(sUserNameBuff, InStr(sUserNameBuff, vbNullChar) - 1)
End Function
Sub tt()
MsgBox GetUserName
End Sub
[/vba]
и еще тут есть пример, правда по-моему тоже самое, что и я написала


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеВот еще вариант (где нашла, уже не помню), вдруг подойдет:
[vba]
Код
Declare Function WNetGetUserA Lib "mpr.dll" (ByVal lpName As String, ByVal lpUserName As String, lpnLength As Long) As Long
[/vba][vba]
Код
Function GetUserName() As String
       Dim sUserNameBuff As String * 255
       sUserNameBuff = Space(255)
       Call WNetGetUserA(vbNullString, sUserNameBuff, 255&)
       GetUserName = Left$(sUserNameBuff, InStr(sUserNameBuff, vbNullChar) - 1)
End Function
Sub tt()
MsgBox GetUserName
End Sub
[/vba]
и еще тут есть пример, правда по-моему тоже самое, что и я написала

Автор - Manyasha
Дата добавления - 01.09.2015 в 21:28
EvgenyD Дата: Вторник, 01.09.2015, 22:39 | Сообщение № 15
Группа: Пользователи
Ранг: Участник
Сообщений: 74
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
Manyasha, спасибо это уже пробовал. Увы, выдает "Евгений", а хотелось бы то, что я в сообщении №4 прикреплял.
 
Ответить
СообщениеManyasha, спасибо это уже пробовал. Увы, выдает "Евгений", а хотелось бы то, что я в сообщении №4 прикреплял.

Автор - EvgenyD
Дата добавления - 01.09.2015 в 22:39
anvg Дата: Среда, 02.09.2015, 08:39 | Сообщение № 16
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
Доброе время суток
Скорее всего предложенными средствами так или иначе возвращается имя пользователя, вошедшего в систему Windows. Вам же нужна данные учётной записи подключения к Office 365. Скорее всего в объектной модели Excel такого нет (Может что есть в объектной модели Microsoft Office Object Library). Можно попытаться, используя Using Excel to Retrieve Office 365 Reporting Data - хотя есть вопрос - захотите ли вы светить данные входа администратора Offce 365, получить информацию если она там есть о подключенных пользователях и, если есть, с какого компьютера они подключены. Увы, сообщить что-то детальнее не могу - не имею установленного Office 365.
Цитата
HKEY_USERS\S-1-5-21-1838117663-2728108920-1439421766-1000\Software\Microsoft\Office\15.0\Common\Identity\Identities\dc7cdd78f0fa498e_OrgId

Интересно, а в ветке залогиневшегося к Office 365 текущего пользователя Windows HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Common\Identity\Identities - ничего нет?


Сообщение отредактировал anvg - Среда, 02.09.2015, 08:46
 
Ответить
СообщениеДоброе время суток
Скорее всего предложенными средствами так или иначе возвращается имя пользователя, вошедшего в систему Windows. Вам же нужна данные учётной записи подключения к Office 365. Скорее всего в объектной модели Excel такого нет (Может что есть в объектной модели Microsoft Office Object Library). Можно попытаться, используя Using Excel to Retrieve Office 365 Reporting Data - хотя есть вопрос - захотите ли вы светить данные входа администратора Offce 365, получить информацию если она там есть о подключенных пользователях и, если есть, с какого компьютера они подключены. Увы, сообщить что-то детальнее не могу - не имею установленного Office 365.
Цитата
HKEY_USERS\S-1-5-21-1838117663-2728108920-1439421766-1000\Software\Microsoft\Office\15.0\Common\Identity\Identities\dc7cdd78f0fa498e_OrgId

Интересно, а в ветке залогиневшегося к Office 365 текущего пользователя Windows HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Common\Identity\Identities - ничего нет?

Автор - anvg
Дата добавления - 02.09.2015 в 08:39
EvgenyD Дата: Среда, 02.09.2015, 09:15 | Сообщение № 17
Группа: Пользователи
Ранг: Участник
Сообщений: 74
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
anvg, Вы правы, по этому пути находятся такие же данные как и в указанном мной ранее.
Приведенную статью еще не читал, сяду вечером, т.к. это надолго (с инглишем плохо).
 
Ответить
Сообщениеanvg, Вы правы, по этому пути находятся такие же данные как и в указанном мной ранее.
Приведенную статью еще не читал, сяду вечером, т.к. это надолго (с инглишем плохо).

Автор - EvgenyD
Дата добавления - 02.09.2015 в 09:15
anvg Дата: Среда, 02.09.2015, 11:07 | Сообщение № 18
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
Цитата
по этому пути находятся такие же данные

Не могли бы вы скинуть экспортированную ветку этого раздела реестра, естественно, изменив сами имена, логины, в силу их конфиденциальности? Вдруг там есть какой-нибудь идентификатор активного пользователя, тогда требуемую информацию можно будет попытаться извлечь из реестра.
Если будете экспортировать, то сделайте это при запущенном Excel и выполненном входе в учётную запись Microsoft.
 
Ответить
Сообщение
Цитата
по этому пути находятся такие же данные

Не могли бы вы скинуть экспортированную ветку этого раздела реестра, естественно, изменив сами имена, логины, в силу их конфиденциальности? Вдруг там есть какой-нибудь идентификатор активного пользователя, тогда требуемую информацию можно будет попытаться извлечь из реестра.
Если будете экспортировать, то сделайте это при запущенном Excel и выполненном входе в учётную запись Microsoft.

Автор - anvg
Дата добавления - 02.09.2015 в 11:07
anvg Дата: Среда, 02.09.2015, 21:25 | Сообщение № 19
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
Можно таким кодом
[vba]
Код
Private Const IdentitiesSubKeyName As String = "Software\Microsoft\Office\15.0\Common\Identity\Identities"
Private Function GetIdentitiesNames()
On Error GoTo errHandle
      Const HKEY_CURRENT_USER = &H80000001
      Dim pReg As Object, sNames
      Set pReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
      pReg.EnumKey HKEY_CURRENT_USER, IdentitiesSubKeyName, sNames
      GetIdentitiesNames = sNames
Exit Function
errHandle:
      GetIdentitiesNames = sNames
End Function

Public Sub test()
      Const SignParamName = "\SigninName", DisplayParamName = "\FriendlyName"
      Dim Keys, i As Long, SignName As String, DisplayName As String
      Dim wshShell As Object, sKey As String
      Keys = GetIdentitiesNames
      If Not IsEmpty(Keys) Then
          Set wshShell = CreateObject("WScript.Shell")
          For i = LBound(Keys) To UBound(Keys)
              sKey = Keys(i)
              SignName = wshShell.RegRead("HKCU\" & IdentitiesSubKeyName & "\" & sKey & SignParamName)
              DisplayName = wshShell.RegRead("HKCU\" & IdentitiesSubKeyName & "\" & sKey & DisplayParamName)
              Debug.Print SignName & " === " & DisplayName
          Next
      End If
End Sub
[/vba]
Но остаются два невыясненных вопроса
1. Позволит ли код обратиться к реестру, если это обычный пользователь (если wmi запрещено, то однозначно нет)?
2. Что будет в реестре, если пользователь из под одной учётки Windows более одного раза за сессию подключался к Office 365 под разными именами входа?


Сообщение отредактировал anvg - Среда, 02.09.2015, 21:27
 
Ответить
СообщениеМожно таким кодом
[vba]
Код
Private Const IdentitiesSubKeyName As String = "Software\Microsoft\Office\15.0\Common\Identity\Identities"
Private Function GetIdentitiesNames()
On Error GoTo errHandle
      Const HKEY_CURRENT_USER = &H80000001
      Dim pReg As Object, sNames
      Set pReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
      pReg.EnumKey HKEY_CURRENT_USER, IdentitiesSubKeyName, sNames
      GetIdentitiesNames = sNames
Exit Function
errHandle:
      GetIdentitiesNames = sNames
End Function

Public Sub test()
      Const SignParamName = "\SigninName", DisplayParamName = "\FriendlyName"
      Dim Keys, i As Long, SignName As String, DisplayName As String
      Dim wshShell As Object, sKey As String
      Keys = GetIdentitiesNames
      If Not IsEmpty(Keys) Then
          Set wshShell = CreateObject("WScript.Shell")
          For i = LBound(Keys) To UBound(Keys)
              sKey = Keys(i)
              SignName = wshShell.RegRead("HKCU\" & IdentitiesSubKeyName & "\" & sKey & SignParamName)
              DisplayName = wshShell.RegRead("HKCU\" & IdentitiesSubKeyName & "\" & sKey & DisplayParamName)
              Debug.Print SignName & " === " & DisplayName
          Next
      End If
End Sub
[/vba]
Но остаются два невыясненных вопроса
1. Позволит ли код обратиться к реестру, если это обычный пользователь (если wmi запрещено, то однозначно нет)?
2. Что будет в реестре, если пользователь из под одной учётки Windows более одного раза за сессию подключался к Office 365 под разными именами входа?

Автор - anvg
Дата добавления - 02.09.2015 в 21:25
EvgenyD Дата: Четверг, 03.09.2015, 11:22 | Сообщение № 20
Группа: Пользователи
Ранг: Участник
Сообщений: 74
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
anvg, на Вашем решении и остановлюсь.
Протестировал на 5 машинах пользователей. (Все ОС - Win7, MS Office 365 Business)
При смене учетки, смена значений происходит только после перезапуска приложения (данные в реестр записываются при корректном выходе из приложения, на сколько я понимаю). По пункту 1 протестировать нет возможности.
Прикрепляю файлик с Вашим решением, для возможности быстро попробовать, может еще кто-то протестирует.
К сообщению приложен файл: ReadMSOfficeLog.xlsm (18.2 Kb)
 
Ответить
Сообщениеanvg, на Вашем решении и остановлюсь.
Протестировал на 5 машинах пользователей. (Все ОС - Win7, MS Office 365 Business)
При смене учетки, смена значений происходит только после перезапуска приложения (данные в реестр записываются при корректном выходе из приложения, на сколько я понимаю). По пункту 1 протестировать нет возможности.
Прикрепляю файлик с Вашим решением, для возможности быстро попробовать, может еще кто-то протестирует.

Автор - EvgenyD
Дата добавления - 03.09.2015 в 11:22
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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