如何在VBA中获取excel文件名/路径

时间:2009-12-13 05:12:04

标签: excel-vba vba excel

说,我正在我的excel文件 sample.xls 中写一个VBA。现在我希望在我的VBA中获得 sample.xls 完整路径。我该怎么做?

7 个答案:

答案 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)

如果您将VBA宏存储在另一个Excel工作簿中,但想要获取正在编辑的Excel的详细信息,而不是宏所在的位置,我认为

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 会更简单