Option Explicit
' ログイン名取得API '
Private Declare Function GetUserName Lib "ADVAPI32.dll" _
Alias "GetUserNameA" _
(ByVal IpBuffer As String, nSize As Long) As Long
' ログイン名を取得する '
Public Function GetUserID()
Dim UserName As String
Dim ReturnAPI As Long
UserName = Space(20)
ReturnAPI = GetUserName(UserName, Len(UserName))
GetUserID = Left(UserName, InStr(1, UserName, Chr(0)) - 1)
End Function
' 取得したユーザー名をメッセージボックスに表示 '
Sub GetUserSample()
MsgBox GetUserID()
End Sub
まず、GetUserName関数(API)のための宣言を行います。
次に、Functionプロシージャですが、最初にSpace関数でユーザー名を格納するためのバッファを20文字分確保します。取得したユーザー名の末には余分なNullが挿入されるので、Left関数でNullより左側を実際のユーザー名として抜き出しています。なお、"Chr(0)"はNullの意なので、"vbNullChar"としてもOKです。
最後にSubプロシージャのサンプルを付けていますが、ワークシート上でも、"=GetUserID()"とすればユーザー名を引くことができます。
0 件のコメント:
コメントを投稿