如何获取Excel活动工作表所在文件夹名称并填入单元格
获取激活工作表所属文件夹的实现方法
Excel 没有内置名为 ActiveFolder 的可直接调用函数,但可以通过以下两种方案实现「将当前激活工作表所属文件夹名称填入单元格」的需求:
注意:工作表本身依附于所属的Excel工作簿文件存在,不存在独立于工作簿的存储路径,你需要获取的本质是当前激活工作表所属工作簿的存储文件夹路径。
方法1:无宏内置公式方案(适用于已保存的本地工作簿)
不需要写代码,直接用Excel内置函数组合即可实现,操作步骤:
- 选中需要填入文件夹名称的目标单元格
- 若要获取完整的文件夹上级全路径,输入以下公式后回车即可:
=LEFT(CELL("filename",A1),FIND("[",CELL("filename",A1))-2) - 若仅需要当前文件夹的名称(不需要上层完整路径),输入以下公式后回车即可:
=TRIM(RIGHT(SUBSTITUTE(LEFT(CELL("filename",A1),FIND("[",CELL("filename",A1))-2),"\",REPT(" ",99)),99))
注意:该方案仅对已经保存到本地磁盘的工作簿生效,未保存的新建工作簿使用该公式会返回空值
方法2:VBA自定义函数方案(可复用,支持类内置函数调用)
如果需要更稳定的调用体验,可以自行封装同名的ActiveFolder自定义函数,操作步骤:
- 按快捷键
Alt+F11打开VBA编辑器 - 在左侧工程资源管理器面板右键点击当前工作簿,依次选择「插入」-「模块」
- 在弹出的代码编辑窗口粘贴以下代码:
Function ActiveFolder() As String ' 获取当前激活工作表所属工作簿的文件夹路径 Dim currentWb As Workbook Set currentWb = ActiveSheet.Parent If currentWb.Path <> "" Then ' 返回完整文件夹路径,若只需要文件夹名称,注释掉下一行、启用后续对应代码即可 ActiveFolder = currentWb.Path ' ActiveFolder = Mid(currentWb.Path, InStrRev(currentWb.Path, "\") + 1) Else ActiveFolder = "当前工作簿未保存,无有效存储路径" End If End Function - 粘贴完成后关闭VBA编辑器回到Excel界面,即可在任意单元格直接输入
=ActiveFolder()调用,和内置函数用法一致,自动返回对应文件夹内容。
注意:保存带有VBA代码的工作簿时,需要选择「Excel 启用宏的工作簿(.xlsm)」格式,否则自定义函数会失效*
内容的提问来源于stack exchange,提问作者b_dawg
相关产品推荐
相关产品推荐

