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

Posted

技术标签:

【中文标题】如果文件夹中存在 zip 文件,VBA 将无法仅限于 .dat 文件【英文标题】:VBA fails to limit to just .dat files if there are zip files present in the folder 【发布时间】:2015-06-09 03:49:17 【问题描述】:

我已经为允许选择的文件类型(.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 文件?

【问题讨论】:

【参考方案1】:

猜测您的 zip 文件中可能还包含字符串 .dat(例如 file.dat.zip),因为这个 sn-p:

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

会给你所有包含.dat的文件,而不是所有那些结尾.dat的文件。

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

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

(没有最后的*)。

【讨论】:

以上是关于如果文件夹中存在 zip 文件,VBA 将无法仅限于 .dat 文件的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 VBA 将电子邮件移动到预先存在的文件夹。移动到新文件夹作品

如何在 VBA 中实现 Zip 功能?

如何使用Golang将文件添加到现有的zip文件中

VBA 无法打开包含动态名称的备份文件

VBA之文件筛选

使用 excel vba 从 Web 下载 zip 文件