[英]Excel/VBA Environ(“username”) error
我有一個電子表格,其中包含各種模型輸入,這些模型輸入已加載到SQL Server數據庫中。 此過程的一部分涉及構建審核跟蹤記錄,以了解誰更新了什么內容以及何時更新-我記錄了用戶名和計算機名以及時間戳。
在我的VBA代碼中,我具有以下內容:
用戶= VBA.environ $(“用戶名”)
它在帶有Office 2013的Win7計算機上運行。
當我運行代碼時,一切正常,但是當生產中的某人運行它(在同一台機器上,但他們登錄了,不是我)時,它落在了上面。 我使用了上面的變體(user = environ(“ username”),user = environ $(“ username”)),但總是得到相同的結果-它對我有用,但對其他人無效。
是否有人對如何解決此問題有任何想法?
環境變量不可靠
嘗試這些API方法之一。
選項1
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long
Sub Sample()
Dim lpBuff As String * 25
Dim ret As Long, UserName As String
ret = GetUserName(lpBuff, 25)
UserName = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)
MsgBox UserName
End Sub
選項2
Option Explicit
Private Declare Function GetEnvironmentVariable Lib _
"kernel32" Alias "GetEnvironmentVariableA" _
(ByVal lpName As String, ByVal lpBuffer As String, _
ByVal nSize As Long) As Long
Private Sub Sample()
Dim strUserName As String * 255
Dim x As Integer
x = GetEnvironmentVariable("USERNAME", strUserName, Len(strUserName))
If x > 0 Then
x = InStr(strUserName, vbNullChar)
If x > 0 Then
MsgBox (Left$(strUserName, x - 1))
Else
MsgBox (Left$(strUserName, x))
End If
End If
End Sub
這個給你:
Sub Test()
With CreateObject("WScript.Network")
Debug.Print .UserName
Debug.Print .ComputerName
Debug.Print .UserDomain
End With
End Sub
我總是使用Application.UserName
因為它總是總是更好environ$("username")
可以給您類似“ john〜smith”的東西,而Application.UserName
可以給您“ John Smith”
我總是用
Environ("USERPROFILE")
但總的來說,我需要大量引用該人的桌面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.