Excel Dir()和FSO都缺少1个文件

Excel Dir()和FSO都缺少1个文件,excel,vba,dir,fso,Excel,Vba,Dir,Fso,所有试图找到这个问题解决方案的搜索结果都与我所寻找的相反。我不需要从文件夹内的搜索中排除文件,而是将它们全部包括在内 我的问题是,我的搜索将返回文件夹中除1以外的所有文件。每次都找不到的1文件是完全随机的。我尝试过使用Dir()和FSO方法、不同的目录、不同数量的文件等。无论我尝试什么,列表中总是缺少一个文件 以下是我的代码的简化片段: 目录()版本: FilePath=“C:\Test\” SourceFile=Dir(文件路径&“*.xls*”) 当源文件“”时执行此操作 SourceFil

所有试图找到这个问题解决方案的搜索结果都与我所寻找的相反。我不需要从文件夹内的搜索中排除文件,而是将它们全部包括在内

我的问题是,我的搜索将返回文件夹中除1以外的所有文件。每次都找不到的1文件是完全随机的。我尝试过使用Dir()和FSO方法、不同的目录、不同数量的文件等。无论我尝试什么,列表中总是缺少一个文件

以下是我的代码的简化片段:

目录()版本:

FilePath=“C:\Test\”
SourceFile=Dir(文件路径&“*.xls*”)
当源文件“”时执行此操作
SourceFile=Dir()
ActiveCell.Value=SourceFile
ActiveCell.Offset(1,0).激活
环
FSO版本:

Set FileSystem = CreateObject("Scripting.FileSystemObject")
DoFolder FileSystem.GetFolder(FilePath)

Sub DoFolder(Folder)
    Dim SubFolder
    For Each SubFolder In Folder.SubFolders
        DoFolder SubFolder
    Next

    Dim File
    For Each File In Folder.Files
        If File.Name <> "" Then
            SourceFile = Dir()
            ActiveCell.Value = SourceFile
            ActiveCell.Offset(1, 0).Activate
        End If
    Next
End Sub
Set FileSystem = CreateObject("Scripting.FileSystemObject")
DoFolder FileSystem.GetFolder(FilePath)

Sub DoFolder(Folder)
    Dim SubFolder
    For Each SubFolder In Folder.SubFolders
        DoFolder SubFolder
    Next

    Dim File
    For Each File In Folder.Files
        If File.Name <> "" Then                
            ActiveCell.Value = File.Name
            ActiveCell.Offset(1, 0).Activate
        End If
    Next
End Sub
Set FileSystem=CreateObject(“Scripting.FileSystemObject”)
DoFolder FileSystem.GetFolder(文件路径)
子文件夹(文件夹)
暗文件夹
对于Folder.SubFolders中的每个子文件夹
DoFolder子文件夹
下一个
暗文件
对于文件夹.Files中的每个文件
如果文件名为“”,则
SourceFile=Dir()
ActiveCell.Value=SourceFile
ActiveCell.Offset(1,0).激活
如果结束
下一个
端接头

同样,它们都返回除1之外的所有文件(随机)

在这两个版本中,
SourceFile=Dir()
位于
ActiveCell.Value=SourceFile
上方。这导致在将文件名添加到列表之前跳过列表中的下一个文件,从而丢失第一个文件

更正代码:

目录()版本:

FilePath=“C:\Test\”
SourceFile=Dir(文件路径&“*.xls*”)
当源文件“”时执行此操作
ActiveCell.Value=SourceFile
ActiveCell.Offset(1,0).激活
SourceFile=Dir()
环
FSO版本:

Set FileSystem = CreateObject("Scripting.FileSystemObject")
DoFolder FileSystem.GetFolder(FilePath)

Sub DoFolder(Folder)
    Dim SubFolder
    For Each SubFolder In Folder.SubFolders
        DoFolder SubFolder
    Next

    Dim File
    For Each File In Folder.Files
        If File.Name <> "" Then
            SourceFile = Dir()
            ActiveCell.Value = SourceFile
            ActiveCell.Offset(1, 0).Activate
        End If
    Next
End Sub
Set FileSystem = CreateObject("Scripting.FileSystemObject")
DoFolder FileSystem.GetFolder(FilePath)

Sub DoFolder(Folder)
    Dim SubFolder
    For Each SubFolder In Folder.SubFolders
        DoFolder SubFolder
    Next

    Dim File
    For Each File In Folder.Files
        If File.Name <> "" Then                
            ActiveCell.Value = File.Name
            ActiveCell.Offset(1, 0).Activate
        End If
    Next
End Sub
Set FileSystem=CreateObject(“Scripting.FileSystemObject”)
DoFolder FileSystem.GetFolder(文件路径)
子文件夹(文件夹)
暗文件夹
对于Folder.SubFolders中的每个子文件夹
DoFolder子文件夹
下一个
暗文件
对于文件夹.Files中的每个文件
如果文件名为“”,则
ActiveCell.Value=File.Name
ActiveCell.Offset(1,0).激活
如果结束
下一个
端接头

FSO版本中
SourceFile=Dir()
中的
Dir()
是什么?“我不需要从文件夹中的搜索中排除文件,而是将它们全部包括在内。”。。。但是在Dir()方法中,您将其限制为.xls文件。因此,假设您的目标是只查看每个.xls文件是公平的,而您的问题是.xls中的一个文件不是随机显示的?是的,所有文件都是.xls或.xlsx,其中一个随机显示的文件不会显示。从未在Dir()或FSO.Nelly中看到过这种行为在FSO版本中,可以将SourceFile设置为目录中的下一个文件。