VBA不会从stick加载文件,但会从计算机加载。为什么?

时间:2014-07-01 19:14:07

标签: excel vba

我正在尝试创建一个VBA excel宏,它将加载.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

我试图移除& " \" & 但它仍然无法运作。有任何想法吗?谢谢!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

每当我在VBA中以编程方式处理文件时,我都使用了Microsoft Scripting Runtime。在VBA界面中,单击工具菜单,引用... ,然后选中“[x] Microsoft Scripting Runtime”旁边的框。

您可以使用以下内容测试程序化对该文件夹的访问:

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”

分配文件名来更改文件名。