VBA不会加载文件,而是从电脑加载。 为什么?

我正在尝试制作一个VBA excelmacros,它将加载.mp3文件并重命名它们。 当我从我的电脑上的一个文件夹加载文件时,它工作正常,但我得到这个错误:

Runtime error '53': File not found 

这是我的代码是什么时候工作:

 fileDir = "C:\MyMusic" oldFileName = "test.mp3" newFileName = "test1.mp3" Name fileDir & "\" & oldFileName As fileDir & "\" & newFileName 

这是我的代码不起作用时(使用闪存驱动器e):

 fileDir = "E:\" oldFileName = "test.mp3" newFileName = "test1.mp3" Name fileDir & "\" & oldFileName As fileDir & "\" & newFileName 

我试图删除&“\”&但它仍然无法正常工作。 有任何想法吗? 谢谢!

最可能的问题是根源于文件/目录权限。 以编程方式将文件重命名为(或将其复制)到任何不在“您的域”(即MyDocumentsMyMusic等)中的文件夹。 需要一定的访问权限。 首先,尝试在任何其他目录(例如“C”驱动器)上执行此操作,并查看它是如何工作的。 而且,确保文件path中没有语法错误(看起来你的2个语句在这方面是不同的)。 希望这会有所帮助,

如果您认为可能存在文件夹权限问题,请尝试直接在Windows资源pipe理器中编辑文件名。 如果您有权访问,您应该能够很快地分辨出来。

任何时候我已经在VBA中以编程方式处理文件,我已经使用了Microsoft脚本运行时。 在VBA界面点击Tools菜单References … ,然后选中“[x] Microsoft Scripting Runtime”旁边的checkbox。

您可以使用类似于以下的方式来testing对该文件夹的访问权限:

 Dim FSO as Scripting.FileSystemObject Dim SourceFolder as Scripting.Folder Dim CurFile as Scripting.File Set SourceFolder = FSO.GetFolder("E:\") For Each CurFile in SourceFolder.Files MsgBox CurFile.Name Next CurFile 

如果你能够使用消息框显示文件名,你也应该能够通过分配CurFile.Name =“MyNewName.mp3”来改变文件名