VBA FileSystemObject显示不再存在的文件

时间:2019-10-02 08:02:01

标签: excel vba filesystemobject

在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

0 个答案:

没有答案