说,我正在我的excel文件 sample.xls 中写一个VBA。现在我希望在我的VBA中获得 sample.xls 的完整路径。我该怎么做?
答案 0 :(得分:37)
如果您的意思是VBA,那么您可以使用FullName,例如:
strFileFullName = ThisWorkbook.FullName
(评论认为更新:前者使用ActiveWorkbook.FullName
更可能是错误的,如果其他办公室文件可能是打开(ed)和活动的。但是如果你将宏存储在另一个文件中,用户@ user7296559 here提到的,如果确保在执行时保持活动状态,那么真正希望宏用文件的文件名ActiveWorkbook
可能是正确的选择。)
答案 1 :(得分:13)
这是一个简单的替代方案,它提供所有响应,Fullname,Path,filename。
Dim FilePath, FileOnly, PathOnly As String
FilePath = ThisWorkbook.FullName
FileOnly = ThisWorkbook.Name
PathOnly = Left(FilePath, Len(FilePath) - Len(FileOnly))
答案 2 :(得分:8)
strScriptFullname = WScript.ScriptFullName
strScriptPath = Left(strScriptFullname, InStrRev(strScriptFullname,"\"))
答案 3 :(得分:4)
如果只需要路径,这是最直接的方法:
print_r
答案 4 :(得分:2)
ActiveWorkbook.FullName会更好。
如果它们位于同一个文件中,则无关紧要,但如果它们位于不同的文件中,并且您希望文件所在的位置是Data所在的位置,那么ActiveWorkbook就是其中之一,因为它处理两种情况。
答案 5 :(得分:0)
有一种通用的方法可以解决这个问题:
Function FileName() As String
FileName = Mid(Application.Caption, 1, InStrRev(Application.Caption, "-") - 2)
End Function
答案 6 :(得分:0)
如果你只需要没有文件名的路径:
ActiveWorkbook.Path
它会返回 D:\Folder
如果您还需要带文件名的文件路径:
ActviveWorkbook.FullName
它会返回 D:\Folder\sample.xls
如果您只需要文件名:
ActiveWorkbook.Name
它会返回 sample.xls
所以如果你想结合文件路径和文件名来获得完整的目录,不要忘记在它们之间添加“”。否则使用 .Path 会更简单