Attribute VB_Name = "xGetUserName関数"
' @(h) xGetUserName関数.bas                          ver 1.1 ( '98.10.08  )

' @(s)
'  ログオンユーザ名を取得する関数モジュール
'  本モジュールはテスト用コードモジュールです。
'
Option Explicit
Public Const MAX_USERNAME_LENGTH = 64
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Attribute GetUserName.VB_ProcData.VB_Invoke_Func = " \n14"

Sub xGetUserNameのテスト()  'ExcelまたはVisual Basicで実行してください。
Attribute xGetUserNameのテスト.VB_ProcData.VB_Invoke_Func = " \n14"
    MsgBox "(" & xGetUserName & ")"
End Sub

' @(f)
'
' 機能      : ログオンユーザ名を取得する関数
'
' 返り値    : ログオンユーザ名
'
' 引き数    : なし
'
' 機能説明  : ログオンユーザ名を取得する関数
'
' 備考      : 特になし
'
Function xGetUserName() As String
Attribute xGetUserName.VB_ProcData.VB_Invoke_Func = " \n14"
    Dim lpBuffer$, nSize&, dl&
    
    nSize& = MAX_USERNAME_LENGTH                                    '' サイズの設定
    lpBuffer$ = String$(MAX_USERNAME_LENGTH, 0)                     '' バッファの確保
    dl& = GetUserName(lpBuffer$, nSize)                             '' API関数
    xGetUserName = Left(lpBuffer$, InStr(lpBuffer$, Chr$(0)) - 1)   '' リターン値の設定
End Function