教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

ExcelVBAでWindowsAPIを使いログイン名を取得する方法

API宣言

WindowsAPI(関数)を使うためには、事前に宣言が必要となります。

Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

解説

この宣言では、GetUserName関数(PCにログインしているユーザー名を取得)が使用できる様になります。

プログラミング例

具体的なプログラミング例を紹介します。

Sub ユーザー名を表示()
    Dim ユーザー名 As String * 255
    Dim サイズ As Long
    サイズ = 255
    ' GetUserName関数を呼び出して、ユーザー名を取得します
    If GetUserName(ユーザー名, サイズ) Then
        MsgBox "このPCにログインしているユーザー名は " & Left(ユーザー名, InStr(ユーザー名, Chr(0)) - 1) & " です。"
    Else
        MsgBox "ユーザー名の取得に失敗しました。"
    End If
End Sub

上記のプログラムは、PCにログインしている場合はユーザー名を表示し、ログインしていない場合は「ユーザー名の取得に失敗しました。」を表示します。

まとめ

WindowsAPI関数:GetUserNameを使用し、PCにログインしているユーザー名を取得する方法を紹介しました。これを使うと、誰が使用しているかを簡単に知ることができます。