如何在VBA中获取excel文件名/路径
比如说,我正在excel文件sample.xls中编写VBA。现在我想在VBA中获取sample.xls的完整路径。如何操作?如果您指的是VBA,则可以使用全名,例如:如何在VBA中获取excel文件名/路径,excel,vba,Excel,Vba,比如说,我正在excel文件sample.xls中编写VBA。现在我想在VBA中获取sample.xls的完整路径。如何操作?如果您指的是VBA,则可以使用全名,例如: strScriptFullname = WScript.ScriptFullName strScriptPath = Left(strScriptFullname, InStrRev(strScriptFullname,"\")) strFileFullName = ThisWorkbook.FullName
strScriptFullname = WScript.ScriptFullName
strScriptPath = Left(strScriptFullname, InStrRev(strScriptFullname,"\"))
strFileFullName = ThisWorkbook.FullName
(根据评论意见进行了更新:如果其他office文件可能被打开(ed),则前者使用的
ActiveWorkbook.FullName
更可能是错误的)但如果您将宏存储在另一个文件中,如user@user7296559所述,并且确实需要使用file的宏的文件名,ActiveWorkbook
可能是正确的选择,如果它保证在执行时处于活动状态。)ActiveWorkbook.FullName我认为更好,如果VBA宏存储在另一个Excel工作簿中,但希望获取正在编辑的Excel的详细信息,而不是宏所在的位置
如果它们位于同一个文件中,则无所谓,但如果它们位于不同的文件中,并且您希望该文件位于数据所在的位置而不是宏所在的位置,那么ActiveWorkbook就是您要选择的文件,因为它同时处理这两种情况。这是一个简单的替代方案,可以提供所有响应、全名、路径和文件名
Dim FilePath, FileOnly, PathOnly As String
FilePath = ThisWorkbook.FullName
FileOnly = ThisWorkbook.Name
PathOnly = Left(FilePath, Len(FilePath) - Len(FileOnly))
有一种通用的方法可以做到这一点:
Function FileName() As String
FileName = Mid(Application.Caption, 1, InStrRev(Application.Caption, "-") - 2)
End Function
如果只需要路径,这是最简单的方法:
PathOnly = ThisWorkbook.Path
如果只需要路径而不需要文件名:
ActiveWorkbook.Path
它将返回D:\文件夹
如果还需要文件名为的文件路径:
ActviveWorkbook.FullName
它将返回D:\Folder\sample.xls
如果您只需要文件名:
ActiveWorkbook.Name
它将返回sample.xls
所以,如果您想要合并文件路径和文件名以获得完整目录,请不要忘记在两者之间添加“”。否则,使用.Path会更简单。当您在sample.xls内说VBScript时,您是指Excel固有的VBA吗?那么您是否想更正标题和标记?op中说的是inside sample.xls,这让我怀疑VBScript。我怀疑VBA。你肯定是指这个工作簿。全名?;)Oorang的评论是正确的:“ThisWorkbook.FullName”将是正确且安全的调用。Veera的问题是:“我正在excel文件sample.xls中编写VBA。现在我想在VBA中获得sample.xls的完整路径。”。(添加了强调符号。)在这种情况下,使用“ThisWorkbook.FullName”保证是正确的,而如果“sample.xls”当前不是活动工作簿,“ActiveWorkbook.FullName”则可能给出错误的答案。这是有效的。请记住,如果文件未保存,则
thiswoolk.Name
和thiswoolk.FullName
将返回文件名(例如Book1),而不带文件扩展名或路径。首先,它可能很有用。除了PathOnly=Left(FilePath,Len(FilePath)-Len(FileOnly))
你可以写:“PathOnly=thishworkbook.Path`为什么你说这是一种通用的方法?”?这甚至不能回答问题。OP需要带路径的全名。您的所有函数都与:ThisWorkbook.Name