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".
- 没有反斜杠的文件复制 - 运行时错误 75 "Path/File access error"
- 带反斜杠的文件复制 - 运行时错误 76 "Path not found"
- 没有反斜杠的 CopyFile - 运行时错误 70 "Permission denied"
- 带反斜杠的 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".
- 没有反斜杠的文件复制 - 运行时错误 75 "Path/File access error"
- 带反斜杠的文件复制 - 运行时错误 76 "Path not found"
- 没有反斜杠的 CopyFile - 运行时错误 70 "Permission denied"
- 带反斜杠的 CopyFile - 确定 .