FileSystem.FileCopy 对比 objFSO.CopyFile

FileSystem.FileCopy vs objFSO.CopyFile

是否有我应该使用以下内容的特定场景或者它们可以互换?

选项 1

...
FileSystem.FileCopy...
...

选项 2

...    
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.CopyFile
...

或者选项 1 在幕后只是选项 2?

选项 1 的 FileSystem.FileCopy 是用于复制文件的内置 VBA 函数,它是核心语言的一部分并且始终可用(您不需要 FileSystem 命名空间前缀)

选项2更复杂;它使用 COM 创建一个后期绑定的 FSO 实例,并调用一个与内置函数同名并执行相同操作的方法。

与选项 1 相比,使用选项 2 似乎没有什么好处,唯一的功能区别是 FSO 公开了一个参数来控制覆盖行为,您需要使用内置的 FileCopy 手动处理(足够琐碎)。

我发现如果源文件被另一个用户打开,FileCopy 方法可能会失败,但 FSO 方法在这两种情况下都有效。

我需要将具有 Chinese/Japanese 个字符的文件复制到也具有 Chinese/Japanese 个字符的文件夹,在设置为中文系统区域设置的计算机上。

我尝试使用 FileCopy 但遇到了:

runtime error 75 "Path/File access error"

当目标文件路径末尾没有反斜杠时,并且

runtime error 76 "Path not found"

当我包含反斜杠时。

但是,当我使用 CopyFile 时它工作得很好。 但注意目标文件路径需要包含反斜杠,否则会遇到运行时错误70 "Permission denied".

  1. 没有反斜杠的文件复制 - 运行时错误 75 "Path/File access error"
  2. 带反斜杠的文件复制 - 运行时错误 76 "Path not found"
  3. 没有反斜杠的 CopyFile - 运行时错误 70 "Permission denied"
  4. 带反斜杠的 CopyFile - 确定 .