如何在 VBA 中获取当前工作表的路径?
Posted
技术标签:
【中文标题】如何在 VBA 中获取当前工作表的路径?【英文标题】:How to get the path of current worksheet in VBA? 【发布时间】:2011-02-18 07:50:25 【问题描述】:我编写了一个宏作为加载项,我需要获取正在执行它的当前工作表的路径。我该怎么做呢?如何获取文件路径(只是目录)?
【问题讨论】:
你的意思是,给定一个工作表,你想知道父工作簿保存的文件夹吗? 【参考方案1】:Application.ActiveWorkbook.Path
仅用于路径本身(没有工作簿名称)或Application.ActiveWorkbook.FullName
用于路径工作簿名称。
【讨论】:
活动工作簿取决于哪个工作簿处于活动状态。使用 Thisworkbook.path 当然,两者在不同的情况下都有用。我认为原始问题的意思是宏驻留在加载项工作簿(即 ThisWorkbook.path)中,但需要根据用户需要对其他工作簿运行代码(即 ActiveWorkbook.path)。跨度> 应始终明确 - 如果是此工作簿,则应为 application.thisworkbook.path。如果是打开的工作簿,则应使用集合定义名称,然后是 application.Variablename.path(或 fullpath,取决于)。 @Selkie 如果 代码本身 打开工作簿,那么可以。但是,如果这只是一个驻留在加载项工作簿中的辅助宏,并且需要在用户调用该宏时对当前打开的任何工作簿进行操作,则需要ActiveWorkbook
。
Excel.ActiveWorkbook.Path
仅在文件至少保存一次时才有效。此外,如果文件从未保存过,Excel.ActiveWorkbook.FullName
只返回文件名。 check if the workbook has ever been saved 可能是个好主意。【参考方案2】:
总是很高兴拥有:
Dim myPath As String
Dim folderPath As String
folderPath = Application.ActiveWorkbook.Path
myPath = Application.ActiveWorkbook.FullName
【讨论】:
【参考方案3】:如果您想从执行宏的位置获取工作簿的路径 - 使用
Application.ThisWorkbook.Path
Application.ActiveWorkbook.Path
有时会产生意想不到的结果(例如,如果您的宏在多个工作簿之间切换)。
【讨论】:
@avalanche1. 完全正确,activeworkbook 给我带来了很多意想不到的结果【参考方案4】:最快的方法
path = ThisWorkbook.Path & "\"
【讨论】:
如果您可以在最后添加 &"\",您的方式会很好。 myPath = ThisWorkbook.Path & "\"以上是关于如何在 VBA 中获取当前工作表的路径?的主要内容,如果未能解决你的问题,请参考以下文章