2009-12-13 49 views
19

说,我在我的excel文件sample.xls中写了一个VBA。现在我想在我的VBA中获得完整路径sample.xls。我该怎么做?如何获得VBA中的excel文件名/路径

+1

当你说* sample.xls里面的VBScript *,你的意思是VBA,它是Excel本地的? – Fionnuala 2009-12-13 09:52:18

+0

@Remou 是的,它是VBA。 – Veera 2009-12-15 11:12:16

+1

您可能想更正标题和标签吗? – Oorang 2009-12-15 16:11:24

回答

23

如果你的意思是VBA,那么你可以使用全名,例如:

strFileFullName = ActiveWorkbook.FullName 
+11

当然你的意思是ThisWorkbook.FullName? ;) – Oorang 2009-12-15 16:10:23

+4

不一定。 – Fionnuala 2009-12-15 16:36:45

+13

Oorang的评论是正确的:'ThisWorkbook.FullName'将是正确和安全的电话。 Veera的问题指出:“我在* excel文件sample.xls中编写VBA *,现在我想在我的VBA中获得sample.xls的完整路径。” (强调添加。)在这种情况下,使用'ThisWorkbook.FullName'是保证是正确的,而'ActiveWorkbook.FullName'可能会给出一个疯狂错误的答案,如果“sample.xls”目前不是活动工作簿。 – 2010-01-12 16:30:14

7
strScriptFullname = WScript.ScriptFullName 
    strScriptPath = Left(strScriptFullname, InStrRev(strScriptFullname,"\")) 
+3

op说*里面* sample.xls,这让我怀疑VBScript。我怀疑VBA。 – Fionnuala 2009-12-13 09:53:22

0

ActiveWorkbook.FullName将是我最好三思,如果你有VBA宏存储在另一个Excel工作簿,但是您想获取正在编辑的Excel的详细信息,而不是宏所在的位置。

如果它们驻留在同一个文件中,那么它并不重要,但是如果它们在不同的文件中,并且您希望文件位于Data而不是Macro所在的位置,那么ActiveWorkbook是您需要的文件,因为它处理两种情况。

2

这是一个简单的选择,它提供所有响应,全名,路径,文件名。

Dim FilePath, FileOnly, PathOnly As String 

FilePath = ThisWorkbook.FullName 
FileOnly = ThisWorkbook.Name 
PathOnly = Left(FilePath, Len(FilePath) - Len(FileOnly)) 
+0

Insul of'PathOnly = Left(FilePath,Len(FilePath) - Len(FileOnly))''你可以写:'PathOnly = ThisWorkbook.Path' – EBH 2017-05-11 18:49:20

相关问题