[ VBA ] ログインユーザー名の取得方法2選 ( WScript.Network と WinAPI )

Pocket

ここでは、VBAを使ってPCにログインしているログインユーザー名を取得する2通りの方法を掲載しています。

スポンサーリンク

WScript.Network オブジェクトを使用する

1つ目は、WScript.Network オブジェクトを使用する方法です。スッキリした記述で分かりやすいと思います。

Dim loginUser As String

' ログインユーザー名を取得する
loginUser = CreateObject("WScript.Network").UserName

WinAPI の GetUserName 関数を使用する

2つ目は、WinAPI の GetUserName 関数を使用してログインユーザー名を取得する方法です。こちらは、1つ目と比べて面倒です。

まずは、以下の WinAPI の宣言を標準モジュールに記述します。

' WinAPI の宣言:この宣言は標準モジュールに記述する
Public Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" ( _
    ByVal lpBuffer As String, nSize As Long) As Long

そして、必要な個所で GetUserName 関数を呼び出して、ログインユーザー名を取得します。

    Dim loginUser As String * 255 ' ログインユーザー(文字列)が格納されるバッファ
    Dim ret As Long ' リターン値
    
    ' ログインユーザー名を取得する
    ret = GetUserName(loginUser, 255)
       
    ' 後ろのNULL文字を除去
    loginUser = Replace(loginUser, vbNullChar, "")

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *