在Excel VBA中使用相对路径而不是绝对路径

3
以下代码运行良好,但如果我想与同事共享它,则需要在代码中使用相对路径来获取工作簿:
Sub HELLO()

Dim x As Workbook


Sheets("Sheet1").Cells.Clear

'## Open both workbooks first:
Set x = Workbooks.Open("C:\Users\500722\Desktop\dashboard\Task.xls")


'Now, transfer values from x to y:
Sheet1.Cells(1, 1) = x.Sheets("Page 1").Range("A1")
With x.Sheets("Page 1").UsedRange
    'Now, paste to y worksheet:
    Sheet1.Range("A1").Resize( _
        .Rows.Count, .Columns.Count) = .Value

End With

x.Close

End Sub

如果我使用 Set x = Workbooks.Open("\Task.xls"),就会出现路径找不到的错误。
2个回答

6
请使用以下内容代替:
Set x = Workbooks.Open(ThisWorkbook.Path & "\Task.xls")

3

对于您的问题,有一个不同的观点——Macro Mans的回答给出了相对于工作簿的路径。

您的示例代码正在引用用户桌面,因此我猜想这可能是您要寻找的相对于用户的路径。

'Special folders are : AllUsersDesktop, AllUsersStartMenu
'AllUsersPrograms, AllUsersStartup, Desktop, Favorites
'Fonts, MyDocuments, NetHood, PrintHood, Programs, Recent
'SendTo, StartMenu, Startup, Templates
Public Sub Test()
    Dim oShell As Object
    Set oShell = CreateObject("WScript.Shell")
    MsgBox oShell.SpecialFolders("Desktop")
End Sub

如果您搜索 SpecialFolders VBA,会有很多网站提供此信息。以下是其中两个网站:
http://www.rondebruin.nl/win/s3/win027.htm
https://bytes.com/topic/access/insights/933853-find-users-special-folders-such-desktop-my-documents


另一个选项是 Environ $ ("USERPROFILE")&"\ Desktop \",如果您想要桌面 :) - SierraOscar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接