[英]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.