在VBA中,我的某些行为对我来说似乎很奇怪。
我有以下代码:
Dim oFSO As FileSystemObject
Dim oFolder As Folder
Dim oFile As File
Set oFSO = New FileSystemObject
Set oFolder = oFSO.GetFolder(wbCases.Path & "\..\my\sub\path\to\photos")
For Each oFile In oFolder.Files
If oFolder.Files.Count = 1 Then
Name oFolder.Path & "\" & oFile.Name As oFolder.Path & "\" & "12345.jpg"
oFSO.CopyFile oFolder.Path & "\12345.jpg", oFolder.Path & "\" & "1235.jpg"
Else
If oFolder.Files.Count > 1 Then
Kill oFile
End If
End If
Next oFile
该代码应检查
行中指定的文件夹的内容Set oFolder = oFSO.GetFolder(wbCases.Path & "\..\my\sub\path\to\photos")
解析为网络驱动器上的以下现有文件夹:
I:\用于创建\ my \ sub \ path \ to \ photos的本地副本的根目录
如果此文件夹中有多个文件,我要删除所有文件,直到只剩下一个。然后我要复制最后一个文件。但是,我认为这最后一步应该与我遇到的问题无关,因为在删除一个文件之外的所有文件之前我都遇到了上述问题。
也就是说,正在发生的事情是我正在获取此目录中不再存在的文件。
例如,执行此代码时,此文件夹中有五个文件,这由cmd确认:
I:\root of Local Copy for building\my\sub\path\to\photos>dir Volume in drive I is DE_User11 Volume Serial Number is 009A-9A03 Directory of I:\root of Local Copy for building\my\sub\path\to\photos 02.10.2019 09:43 <DIR> . 02.10.2019 09:14 <DIR> .. 19.08.2019 16:01 4.818.169 32993a - Copy (3).jpg 19.08.2019 16:01 4.818.169 32993a - Copy (3) - Copy - Copy.jpg 19.08.2019 16:01 4.818.169 32993a - Copy (4).jpg 19.08.2019 16:01 4.818.169 32993a - Copy (3) - Copy.jpg 19.08.2019 16:01 4.818.169 32993a.jpg 5 File(s) 24.090.845 bytes 2 Dir(s) 153.919.488 bytes free
但是,当使用上面发布的VBA代码遍历此文件夹中的文件时,例如,我得到了由以下文件填充的oFile变量:
I:\root of Local Copy for building\my\sub\path\to\photos\2229.jpg
该文件曾经存在,但是我几天前已将其删除,并且如上所述,根据cmd的dir命令,该文件不存在。但是,我的VBA代码似乎认为它存在,从而导致尝试使用
删除它时出现问题Kill oFile
为什么会这样?
更新:
我已经检查了VBA正在查找的文件是否被隐藏了,看来它们是隐藏的。当我运行
dir \a
在文件夹上,我得到以下输出
I:\root of Local Copy for building\my\sub\path\to\photos>dir /a
Volume in drive I is DE_User11
Volume Serial Number is 009A-9A03
Directory of I:\root of Local Copy for building\my\sub\path\to\photos
02.10.2019 09:43 <DIR> .
02.10.2019 09:14 <DIR> ..
29.08.2019 09:41 19.456 2229.jpg
29.08.2019 09:41 19.456 2231.jpg
29.08.2019 09:41 19.456 2228.jpg
29.08.2019 09:41 19.456 2226.jpg
19.08.2019 16:01 4.818.169 32993a - Copy (3).jpg
29.08.2019 09:41 19.456 2224.jpg
29.08.2019 09:41 19.456 2225.jpg
29.08.2019 09:41 19.456 2227.jpg
19.08.2019 16:01 4.818.169 32993a - Copy (3) - Copy - Copy.jpg
19.08.2019 16:01 4.818.169 32993a - Copy (4).jpg
19.08.2019 16:01 4.818.169 32993a - Copy (3) - Copy.jpg
19.08.2019 16:01 4.818.169 32993a.jpg
29.08.2019 09:41 19.456 2224 - Copy.jpg
29.08.2019 09:41 19.456 2230.jpg
14 File(s) 24.265.949 bytes
2 Dir(s) 153.919.488 bytes free
但是,我无法删除任何隐藏文件:
I:\root of Local Copy for building\my\sub\path\to\photos>del 2229.jpg
Could Not Find I:\root of Local Copy for building\my\sub\path\to\photos\2229.jpg