Excel VBA中相对path而不是绝对path

下面的代码工作正常,但现在如果我想让它给我的同事,我需要使用相对path获取代码中的工作簿:

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")我得到一个错误说path找不到。

用这个代替:

 Set x = Workbooks.Open(ThisWorkbook.Path & "\Task.xls") 

您的问题的不同观点 – macros芒答案确实提供了相对于工作簿的path。

你的示例代码是引用用户的桌面,所以我猜测可能是你之后的path – 相对于用户的path。

 '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 

如果您searchSpecialFolders VBA ,有许多网站会提供此信息。 http://www.rondebruin.nl/win/s3/win027.htm
https://bytes.com/topic/access/insights/933853-find-users-special-folders-such-desktop-my-documents