Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

My vba script in myMacro.xls Workbooks.Open Method work well as below,

Workbooks.Open Filename:="D:ExcelMacroProjmyTest.xls", ReadOnly:=True

But when I try to change the Filename value to a new path as below, but all my practices didn't work. Show Run time error 1004.

Workbooks.Open Filename:="myTest.xls", ReadOnly:=True
or
Workbooks.Open Filename:="./myTest.xls", ReadOnly:=True
or
Workbooks.Open Filename:=".myTest.xls", ReadOnly:=True

Actually myMacro.xls and myTest.xls was placed in the same folder. That's why I want to change to a flexible folder directory.

how could I fix this issue? Appreciated for your read and reply.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
1.4k views
Welcome To Ask or Share your Answers For Others

1 Answer

Filename is relative to the current Excel directory (which is different from the directory in which an opened document is).

You change the current directory by using ChDir "x: ewpath".

But what you actually want to do is:

Workbooks.Open Filename:=EnsureSlash(ThisWorkbook.Path) & "myTest.xls", ReadOnly:=True

, where EnsureSlash is your custom function that appends a backslash () to the end of the string, if it's not already there (because ThisWorkbook.Path ends with a slash when the path is the root directory, and doesn't otherwise).


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...