VBAで
・Windowsのログインユーザー名を取得
できます!
取得方法は複数ありますが、ここでは私が
・1番シンプルと考える方法
を記載します!
「Environ(“USERNAME”)」により、
ログインユーザー名を取得できます!
なおほぼ同様の方法で
・コンピューター名を取得
することもできます!
詳細は以下の記事をご確認ください!
VBAコード
「Environ関数」を使用して取得します。
Sub sample()
'ログインユーザー名を取得
MsgBox Environ("USERNAME")
End Sub
実行結果
ログインユーザー名を取得できました。
※以下はユーザー「user」でWindowsにログインしている状態で実行した結果です。
参考①
「ログインユーザー名」以外にも、「Environ関数」は「コンピューター名」や「CPUの名称」を取得できます。
詳細は以下の記事をご確認ください。
参考②
「WScript.Shell」の「SpecialFolders」により、デスクトップのパスを取得できます。
詳細は以下の記事をご確認ください。
参考③
「Environ関数」は、Windowsの環境変数に設定された値を取得する関数です。
上記以外も取得します。
詳細は公式サイトをご確認ください。
参考④
ログインユーザー名は
・「WshNetworkオブジェクト」の「UserName」プロパティ
でも取得できます。
ただEnviron関数を使用した方法のほうがシンプルのため、こちらの使用はオススメしません。
知識として知っておくだけでよいです。
'変数の宣言を必須
Option Explicit
Sub sample()
Dim wnet As Object
Set wnet = CreateObject("WScript.Network")
'ログインユーザー名を取得
MsgBox (wnet.UserName)
'後片付け
Set wnet = Nothing
End Sub
「WshNetworkオブジェクト」の「UserName」プロパティの詳細は、公式サイトをご確認ください。
参考⑤
ログインユーザー名は
・Windows APIの1つである「GetUserName関数」
でも取得できます。
ただやはりEnviron関数を使用した方法のほうがシンプルのため、こちらの使用もオススメしません。
知識として知っておくだけでよいです。
Option Explicit
'Windows API「GetUserName」
Declare PtrSafe Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Sub sample()
Dim userName As String * 255
'ログインユーザー名を取得
If GetUserName(userName, 255) <> 0 Then
MsgBox userName
Else
MsgBox "ログインユーザー名の取得に失敗しました。"
End If
End Sub
参考⑥
ユーザー名は
・「Applicationオブジェクト」の「UserName」プロパティ
でも取得できます。
ただ、この方法で取得できるのは
・Excelをインストール/ライセンス認証する際に入力したユーザー名
です。
※Windowsのログインユーザー名ではありません。
Sub sample()
'ユーザー名を取得
MsgBox Application.UserName
End Sub
「Applicationオブジェクト」の「UserName」プロパティの詳細は、公式サイトをご確認ください。