在excel中如何通过宏实现修改当前excel文件所在文件夹的名称?

我在其他地方看到可以实现用宏重命名当前excel文件.按照你的思路,当前的excel运行这个宏,表明当前excel文件正在使用,也无法实现。

参考一下重命名的宏:
http://zhidao.baidu.com/link?url=x1mcVQsbqwCOdu8xhseebNMLQLn0puXfwsctWdBZfZqTpGRJPGUlkpxyyvFlhATp6-HFZLfBjHiZWx4B-GkAOq

修改不了,因为当前文件已经打开,说明当前文件所在的路径正在使用。

看了你的问题补充,当文件另存后原文件自行退出当前文件,再删除原文件是可行的。你的问题是修改当前被占用的文件夹,这个不行。如果你也将文件通过宏转移或另存到别的路径,再改原来的文件夹名,可以。然后在转移或另存回原来的以更改名称的路径。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-08-21
.

无法实现。

原因:正在使用的文件夹无法重命名。

当前的excel运行这个宏,表明当前excel文件正在使用,占用当前所在的文件夹。

.追问

我在其他地方看到用宏重命名当前excel文件.是否可以参考一下
http://zhidao.baidu.com/link?url=x1mcVQsbqwCOdu8xhseebNMLQLn0puXfwsctWdBZfZqTpGRJPGUlkpxyyvFlhATp6-HFZLfBjHiZWx4B-GkAOq

追答

追问已阅。下面分享一下对该网友提供脚本的理解:
Sub redir()
A = "test"
F = "c:\windows\temp"
B = ThisWorkbook.Path '获得文件路径
c = ThisWorkbook.Name '获得文件名
D =F& "\" & A & ".xlsm" '在这里需要保存为带宏的,否则不好用哦
E = B & "\" & c
ActiveWorkbook.Save '在另存之前先保存一下自身吧

ThisWorkbook.SaveAs Filename:=D '注意这一行,【实际上就是另存为另外一份文件】,这是利用了【Excel另存后继续打开刚刚保存的文档】这一特点。在这个基础上,另存一份文件,然后再把原先的文件删除掉。但是文件夹另有不同,它需要使用下面的组件来实现:
Set fso = CreateObject("Scripting.FileSystemObject")
fso.MoveFolder B, c
End Sub

理论上这个在xp下默认是可行的,可是win7出于安全的考虑,默认禁止Scripting.FileSystemObject这个组件,所以运行到最后一行时提示禁止的权限。
而且大多xp都不会使用原版了,经过这么多年的优化与改造,很可能xp也会禁止使用这FSO组件,毕竟它是不安全的,利用它可以写一个.vbs的文件或.js文件来对硬盘里的文件进行移动、复制、删除等敏感操作。
再者,如果这个组件经过设置之后可以使用,那么还要考虑到文件夹是否占用的问题,这又回归到第一次回答这个问题的时候。【占用的文件夹是不能重命名的】,这时候又要考虑,把该文件夹关掉,并把该文件夹内正在打开的文件、应用程序等关掉(结束进程)。这又会产生新的问题。

或许有更好的方法,请看到的朋友找到后与大家分享。

相似回答