【问题标题】:How to get the path of current worksheet in VBA?如何在 VBA 中获取当前工作表的路径?
【发布时间】:2011-02-18 07:50:25
【问题描述】:

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

【问题讨论】:

  • 你的意思是,给定一个工作表,你想知道父工作簿保存的文件夹吗?

标签: excel vba


【解决方案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 & "\"
    猜你喜欢
    • 2014-03-10
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    • 2016-06-04
    • 2018-03-11
    • 2010-12-28
    相关资源
    最近更新 更多