VBA 如果文件夹中存在 zip 文件,则无法仅限于 .dat 文件

VBA fails to limit to just .dat files if there are zip files present in the folder

我已经为允许选择的文件类型(.dat 文件)添加了过滤器,但是我发现如果文件夹中存在 zip 文件,脚本将无法正常工作,因为它也会打开 zip 文件.

'Specify folder where measurement files are stored
With Application.FileDialog(msoFileDialogFolderPicker)
    If .Show = True Then
    MyFolder = .SelectedItems(1)
    Else
        Exit Sub
    End If
End With

Sheet8.Columns.ClearContents

sFile_Name = Dir(MyFolder & "\*.dat*")
Do While sFile_Name <> ""
    Set wsData_Sheet = Sheet5
    j = wsData_Sheet.Cells(1, Columns.Count).End(xlToLeft).Column
    jn = j + 1
    lcl = Sheet8.Cells(2, Columns.Count).End(xlToLeft).Column
    lclp = lcl + 1

    Call PARSE_MDF(MyFolder & "\" & sFile_Name, jn, sEND, lclp)
    sFile_Name = Dir()
Loop

如何排除 zip 文件并将其限制为仅 .dat 文件?

猜测您的 zip 文件中的某处也可能包含字符串 .dat(例如 file.dat.zip),因为此片段:

sFile_Name = Dir(MyFolder & "\*.dat*")
'                    note this bit ^

将为您提供所有包含 .dat的文件,而不是.dat中所有结尾的文件。

如果你只想要后者,试试:

sFile_Name = Dir(MyFolder & "\*.dat")

(没有最后的*)。