代码之家  ›  专栏  ›  技术社区  ›  franciscofcosta

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

  •  3
  • franciscofcosta  · 技术社区  · 7 年前

    这是我想要改变的道路:

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

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

    如何编写VBA代码,使其用打开它的Windows用户名替换文件路径中的用户名?

    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 回复  |  直到 7 年前
        1
  •  8
  •   Brian M Stafford    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
    
        2
  •  2
  •   Darren Bartrup-Cook    7 年前

    Environ("userprofile") 将返回路径(&P);用户名。
    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