Sunlim اشاره کرد که وقتی Office نصب می شود، کاربر نام خود را مشخص می کند. این نام در برخی از برنامه های آفیس مانند ورد قابل دسترسی است. Sunlim تعجب می کند که چگونه می تواند به نام کاربران در اکسل دسترسی داشته باشد و آن نام را در یک سلول قرار دهد.
راه برای انجام این کار پیاده سازی یک ماکرو کوتاه و یک خطی است که به ویژگی UserName شی Application دسترسی دارد. این تکنیک در شماره دیگری از ExcelTips توضیح داده شده است:
http://excelribbon.tips.net/T009814
این رویکرد در تعیین نام کاربری مرتبط با نصب فعلی اکسل عالی است. با این حال، ممکن است این همان چیزی نباشد که چه کسی از ورک بوک فعلی استفاده می کند. به عنوان مثال، اگر ورک بوک به اشتراک گذاشته شود، ممکن است چندین نفر همزمان از آن استفاده کنند. در این صورت، همانطور که در اینجا نشان داده شده است، به راهی برای تعیین آن نام ها نیاز دارید:
Function UserNames() As String
Dim Users As Variant
Dim sMsg As String
Dim iIndex As Integer
Users = ActiveWorkbook.UserStatus
For iIndex = 1 To UBound(Users, 1)
sMsg = Users(iIndex, 1) & vbLf
Next iIndex
remove final line feed
sMsg = Left(sMsg, Len(sMsg) - 1)
UserNames = sMsg
End Function
برای استفاده از تابع، فقط فرمول زیر را در سلولی که می خواهید نام ها نمایش داده شود وارد کنید:
=UserNames
اگر می خواهید بدانید چه کسی در حال حاضر از رایانه استفاده می کند، بهتر است به فراتر از Office نگاه کنید و در عوض نام خود را از ویندوز بگیرید. به این ترتیب می توانید تعیین کنید که چه کسی وارد ویندوز شده و از آن به عنوان نام کاربری استفاده کنید. این یک اعلان فراخوانی تابع API را می گیرد، اما در غیر این صورت نسبتا آسان است:
Private Declare Function GetUserName Lib "advapi32.dll" _
Alias "GetUserNameA" (ByVal lpBuffer As String, nSize _
As Long) As Long
Function UserName2() As String
Dim strBuff As String * 100
Dim lngBuffLen As Long
lngBuffLen = 100
GetUserName strBuff, lngBuffLen
UserName2 = Left(strBuff, lngBuffLen - 1)
End Function