用用户名替换VBA中的文件路径

时间:2017-08-25 13:03:47

标签: excel vba excel-vba

我有一个带有VBA的Excel文件,它从我的计算机上的文件中提取信息。 Excel文件位于网络文件夹中,我希望网络上的其他用户也可以使用它。但是,我已经在VBA上硬编码了文件路径,因此,每当其他用户打开它时,它就会查找一个不可用的文件。

这是我想改变的路径:

C:\Users\User1\Documents\The Market in\DATA FOR REPORTS.xlsx

路径上的唯一区别是用户名:User1,user2等

如何编写VBA代码,以便用Windows用户名替换文件路径中的用户名?

我曾尝试使用外卡并尝试使用ENVIRON(“用户名”),但未成功。

我要替换的代码如下:

Private Sub Workbook_Open()

Application.Visible = False
WelcomeForm.Show
Workbooks.Open ("C:\Users\User1\Documents\The Market in\DATA FOR REPORTS.xlsx")

End Sub

这就是我使用ENVIRON做的事情:

Private Sub Workbook_Open()

Dim username As String

username = Environ("username")

Application.Visible = False
WelcomeForm.Show
Workbooks.Open ("C:\Users\&username&\Documents\The Market in\DATA FOR REPORTS.xlsx")

End Sub

非常感谢

2 个答案:

答案 0 :(得分:7)

尝试这样的事情:

Private Sub Workbook_Open()
   Application.Visible = False
   WelcomeForm.Show
   Workbooks.Open ("C:\Users\" & Environ("UserName") & "\Documents\The Market in\DATA FOR REPORTS.xlsx")
End Sub

答案 1 :(得分:2)

Environ("userprofile")将返回路径&用户名。
在我的电脑上,它返回C:\Users\darren.bartrup-cook

另一种方式是:
CreateObject("WScript.Shell").SpecialFolders("MyDocuments")
在我的电脑上,这将返回C:\Users\darren.bartrup-cook\Documents

您可以像这样使用它:

Private Sub Workbook_Open()

    Dim wrkBK As Workbook
    Dim DocFldr As String

    DocFldr = CreateObject("WScript.Shell").SpecialFolders("MyDocuments")

    Set wrkBK = Workbooks.Open(DocFldr & "\The Market in\DATA FOR REPORTS.xlsx")

    MsgBox wrkBK.Name & " is open", vbOKOnly + vbInformation

End Sub