如何在VBA中获取用户名?

Ray*_*234 0 excel vba

我有一个调用Python代码的VBA代码:

Sub Macro1()

    Dim Ret_Val
    Dim args as String
    args = """F:\Asset Management\Global Equity\Better Interface new.py"""
    Ret_val = Shell("C:\Users\MRay\anaconda3\python.exe" & args, vbNormalFocus)

End Sub
Run Code Online (Sandbox Code Playgroud)

但是,此代码很快将被分发,因此用户名“ MRay”将针对每个用户而更改。出于可维护性的目的,我们希望使此过程自动化,而不是手动对其进行更改。到目前为止,这是我尝试过的:

Sub Macro1()

    Dim Ret_Val
    Dim args As String
    Dim full_id As String
    Dim user_id(0 to 2) As String
    user_id(0) = "C:\Users\"
    user_id(1) = Application.UserName
    user_id(2) = "\anaconda3\python.exe"
    full_id = Join(user_id)
    args = """F:\Asset Management\Global Equity\Better Interface new.py"""
    Ret_val = Shell(full_id & args, vbNormalFocus)

End Sub
Run Code Online (Sandbox Code Playgroud)

但是,这导致Ret_val的最后一行出现错误,因为我对VBA真的很陌生,所以我只使用了Python中的逻辑。任何帮助都非常感谢:)

Dan*_*iel 6

我会使用环境变量:

full_id = "C:\Users\" & Environ("username") & "\anaconda3\python.exe"
Run Code Online (Sandbox Code Playgroud)

要么

full_id = Environ("userprofile") & "\anaconda3\python.exe"
Run Code Online (Sandbox Code Playgroud)

/ e:正如Zack在评论中建议的那样,“%UserProfile%\ anaconda3 \ python.exe”也是个好主意!