2017-03-09 33 views
2

次のコードが正常に動作しているが、私はそれが私の同僚を与えたい場合は、今私はコードでブックを取得するために、相対パスを使用する必要があります。エクセルVBAでの代わりに、絶対パスの相対パス

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")を与えると、パスが見つからないというエラーが表示されます。

答えて

4

使用この代わりに:

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

あなたの質問の異なるビューは - マクロ・マンの答えは、ブックへの相対パスを与えません。

あなたのサンプルコードはユーザーのデスクトップを参照しているので、私が推測しているのは、あなたがたどってきたパス、つまりユーザーに対する相対パスかもしれません。

'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

関連する問題