Application.UserName

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

Давно хотел заметить, да руки не доходили:
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
Андрей Энтелис,
aentelis.livejournal.com
Аватара пользователя
AlexZZZ
Сообщения: 237
Зарегистрирован: 01 июн 2007, 00:27
Откуда: Москва и область

Спасибо, ценное замечание!
Хотелось бы только узнать значение строк

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

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

P/S: Теперь, когда исправлено и комментарий есть, всё понятно.
Teslenko_EA
Сообщения: 526
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

Здравствуйте AlexZZZ.
Строка:

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

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

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

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

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

...
  Debug.Print  Environ("USERNAME")
...
Евгений.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

И еще в дополнение

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

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

или

Environ("USERDOMAIN") & "\" & Environ("USERNAME")
Teslenko_EA
Сообщения: 526
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

с помомощью этой функции можно узнать много интересного :)

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

...
    For i = 1 To 29
        s = s + vbCrLf & i & vbTab + Environ(i)
    Next
    Debug.Print s
...
Ответить