如何在 VBA 中获取当前工作表的路径?

我编写了一个宏作为外接程序,我需要得到当前工作表的路径,它正在执行。我该怎么做?如何获取文件路径(只是目录) ?

849237 次浏览

仅对路径本身使用 Application.ActiveWorkbook.Path(不带工作簿名称) ,对路径 使用 Application.ActiveWorkbook.FullName,工作簿名称。

有你在身边总是很好:

Dim myPath As String
Dim folderPath As String


folderPath = Application.ActiveWorkbook.Path
myPath = Application.ActiveWorkbook.FullName

如果要从执行宏的位置获取工作簿的路径,请使用

Application.ThisWorkbook.Path

Application.ActiveWorkbook.Path有时会产生意想不到的结果(例如,如果您的宏在多个工作簿之间切换)。

最快的方法

path = ThisWorkbook.Path & "\"

我也遇到过同样的问题,所以我想出了一个解决方案,我将与大家分享。下面是用于 Excel GetLocalPath ()的 VBA 函数,它获取 ActiveWorkbook 的本地路径:

函数 GetLocalPath ()作为字符串

Dim sRowPath    As String
Dim sLocalPath  As String
Dim iFindhttp   As Integer


sRowPath = Application.ActiveWorkbook.Path


If LCase(Left(sRowPath, 4)) = "http" Then
Dim fso As New FileSystemObject
sLocalPath = fso.GetAbsolutePathName(sRowPath)
iFindhttp = InStr(LCase(sLocalPath), "\http")
sLocalPath = Left(sLocalPath, iFindhttp - 1)
Set fso = Nothing
Else
sLocalPath = sRowPath
End If
        

GetLocalPath = sLocalPath

结束功能’