Страница 1 из 1

Application.UserName

Добавлено: 21 ноя 2008, 13:51
Aent
Давно хотел заметить, да руки не доходили:
Application.UserName
возвращает имя пользователя EXCEL заданное в диалоге Сервис-Параметры->Общие->Имя пользователя. По другому это же имя можно получить опредилив по Ctrl-F3 пользовательсое имя со значением =GET.WORKSPACE(26)
НО ЭТО НЕ ИМЯ ПОЛЬЗОВАТЕЛЯ ЗАЛОГИНЕНОГО В ДАННЫЙ МОМЕНТ НА ЭТОМ КОМПЬЮТЕРЕ!
Последнее можно получить используя код вроде следующего
Далее следует пример Роберта Брюса (Robert Bruce), опубликованный 30.11.1998 http://groups.google.co.uk/groups?threa ... rcon.co.uk

Код: Выделить всё

Option Compare Database 'For Access VBA
Option Explicit
Private Declare Function apiGetUserName Lib "advapi32.dll" _    
   Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Function fOSUserName() As String ' Returns the network login name
    Dim lngLen As Long, lngX As Long
    Dim strUserName As String    
    strUserName = String$(254, 0)    
    lngLen = 255    
    lngX = apiGetUserName(strUserName, lngLen)    
    If lngX <> 0 Then        
          fOSUserName = Left$(strUserName, lngLen - 1)    
    Else        
          fOSUserName = ""    
    End If
End Function

Ссылки по теме:
http://support.microsoft.com/default.as ... us;Q290528
http://groups.google.com/groups?selm=VA ... %40msn.com
Так же полезно посмотреть:
http://www.mvps.org/dmcritchie/excel/userid.htm

Re: Application.UserName

Добавлено: 22 ноя 2008, 16:43
AlexZZZ
Спасибо, ценное замечание!
Хотелось бы только узнать значение строк

Код: Выделить всё

Option Compare Database
Option ExplicitPrivate
Редактор VBA Excel их почему-то не воспринимает:
"Compille Error: Expected: Text of Binary, Base or Compare or Explicit ot Private".
Первая строчка для Access, насколько я понимаю. А вторая?

P/S: Теперь, когда исправлено и комментарий есть, всё понятно.

Re: Application.UserName

Добавлено: 22 ноя 2008, 18:34
Teslenko_EA
Здравствуйте AlexZZZ.
Строка:

Код: Выделить всё

Option Compare Database
устанавливает метод сравнения и используется VBA MS Access. Применяя код в VBA других приложений её можно опустить.
Вторая строка содежит опечатку, вернее не содержит перевода строки:

Код: Выделить всё

Option Explicit
Private Declare...
и еще в дополнение к сказанному Aent. VB(VBA) позволяет получить имя пользователя без API, одной строкой

Код: Выделить всё

...
  Debug.Print  Environ("USERNAME")
...
Евгений.

Re: Application.UserName

Добавлено: 22 ноя 2008, 20:12
Naeel Maqsudov
И еще в дополнение

Полное имя пользователя (вместе с доменом) это:

Environ("USERNAME") & "@" & Environ("USERDOMAIN")

или

Environ("USERDOMAIN") & "\" & Environ("USERNAME")

Re: Application.UserName

Добавлено: 22 ноя 2008, 20:47
Teslenko_EA
с помомощью этой функции можно узнать много интересного :)

Код: Выделить всё

...
    For i = 1 To 29
        s = s + vbCrLf & i & vbTab + Environ(i)
    Next
    Debug.Print s
...