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