You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅列出指定文件夹中的.xlsx文件?VBA代码优化咨询

修改VBA代码实现仅列出指定文件夹中的.xlsx文件

你的代码统计.xlsx文件数量的逻辑是正常的,但在列出文件的环节没有做类型筛选,所以会输出所有文件。只需要在遍历文件的循环中添加扩展名判断即可,以下是修改后的完整代码:

Sub Outstanding39()

    'Count files from selected folder
    Dim folder_path As String
    Dim strtype As String
    Dim totalfiles As Variant

    strtype = "*.xlsx" '去掉末尾的*,避免匹配到.xlsx.zip这类冗余文件

    folder_path = Worksheets("Data2").Cells(83, 2).Value

    If Right(folder_path, 1) <> "\" Then folder_path = folder_path & "\" 
    totalfiles = Dir(folder_path & strtype)

    Dim i As Integer

    While (totalfiles <> "")
        i = i + 1
        totalfiles = Dir
    Wend

    Worksheets("Open").Cells(15, 7).Value = i
    Worksheets("Open").Cells(15, 7).Select

    'List Files from selected folder
    Dim objFSO As Scripting.FileSystemObject
    Dim objFile As Scripting.File
    Dim objFolder As Scripting.Folder
    Dim nextRow As Long

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.GetFolder(Worksheets("Data2").Cells(83, 2).Value)

    nextRow = Cells(Rows.Count, 2).End(xlUp).Row + 1

    For Each objFile In objFolder.Files
        ' 添加扩展名筛选:仅处理.xlsx文件
        If LCase(objFSO.GetExtensionName(objFile.Name)) = "xlsx" Then
            Cells(nextRow, 2) = objFile.Name
            Cells(nextRow, 16) = objFile.ParentFolder
            nextRow = nextRow + 1
        End If
    Next

End Sub

关键修改说明:

  • 在文件遍历循环中新增了If LCase(objFSO.GetExtensionName(objFile.Name)) = "xlsx" Then判断,通过FileSystemObject的GetExtensionName方法获取文件扩展名,转小写后和"xlsx"对比,确保只处理目标类型文件。
  • 同时把统计部分的strtype = "*.xlsx*"改为strtype = "*.xlsx",避免误统计带.xlsx后缀的其他文件(比如xxx.xlsx.zip)。

内容的提问来源于stack exchange,提问作者Kov4n

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 00:55:20