我有两个文件夹:主文件夹&新建文件夹。两个文件夹中的文件共享相同的文件名。我需要交叉检查这两个文件夹之间的文件。
使用下面的代码,我可以附加数据。但它无法导入文件。该脚本不显示任何错误消息。我只是不知道出了什么问题。
On Error Resume Next
Set fso = CreateObject("Scripting.FileSystemObject")
Set SrcFolder = fso.GetFolder("C:\Users\Vault Keeper\Desktop\NewFile")
DestFolder = "C:\Users\Vault Keeper\Desktop\MasterFile"
For Each NewFile in SrcFolder.files
If fso.FileExists(DestFolder & "\" & NewFile.name) Then
txt = NewFile.OpenAsTextStream(1).ReadAll
Set MasterFile = FSO.OpenTextFile(DestFolder & "\" & NewFile.name, 8)
MasterFile.Write txt
Else
fso.CopyFile "C:\Users\Vault Keeper\Desktop\NewFile" & "\" & NewFile.name, _
DestFolder
End If
Next
答案 0 :(得分:1)
当你告诉你的剧本关闭任何错误(On Error Resume Next
)时,你不知道出了什么问题,这并不奇怪。删除该行(无论如何使用全局OERN是一种可怕的做法),看看你得到了什么错误。
错误很可能是"权限被拒绝",因为您正在尝试将文件复制到现有目标文件夹,而该路径没有以反斜杠结尾:
DestFolder = "C:\Users\Vault Keeper\Desktop\MasterFile" '<-- no trailing backslash
...
fso.CopyFile "C:\Users\Vault Keeper\Desktop\NewFile" & "\" & NewFile.name, DestFolder
如果 source 包含通配符或 destination 以路径分隔符()结尾,则假定 destination 是一个现有文件夹,其中复制匹配的文件。否则, destination 将被假定为要创建的文件的名称。在任何一种情况下,复制单个文件时都会发生三件事。
- 如果 destination 不存在,则会复制 source 。这是通常的情况。
- 如果 destination 是现有文件,则覆盖 false 时会发生错误。否则,将尝试将 source 复制到现有文件上。
- 如果 destination 是目录,则会发生错误。
在目标路径上附加一个反斜杠,错误应该消失。此外,由于您已有File
个对象,我建议您使用Copy
方法,而不是CopyFile
:
NewFile.Copy DestFolder & "\"
答案 1 :(得分:0)
您可以使用此
检查文件Dim objFSO As Scripting.FileSystemObject
If objFSO Is Nothing Then Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(fileNameAndPath) Then
'code here...
End If