簡體   English   中英

Excel / VBA Environ(“用戶名”)錯誤

[英]Excel/VBA Environ(“username”) error

我有一個電子表格,其中包含各種模型輸入,這些模型輸入已加載到SQL Server數據庫中。 此過程的一部分涉及構建審核跟蹤記錄,以了解誰更新了什么內容以及何時更新-我記錄了用戶名和計算機名以及時間戳。

在我的VBA代碼中,我具有以下內容:

用戶= VBA.environ $(“用戶名”)

它在帶有Office 2013的Win7計算機上運行。

當我運行代碼時,一切正常,但是當生產中的某人運行它(在同一台機器上,但他們登錄了,不是我)時,它落在了上面。 我使用了上面的變體(user = environ(“ username”),user = environ $(“ username”)),但總是得到相同的結果-它對我有用,但對其他人無效。

是否有人對如何解決此問題有任何想法?

環境變量不可靠

  1. 用戶可以將值編輯為所需的任何內容
  2. 用戶可以刪除環境變量。

嘗試這些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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM