0

无法使用递归 wscript.shell 确定文件过滤器的正确参数。

已尝试在 Application.FileDialog 中过滤,失败。尝试在 dir 之后包含 .txt 扩展名,但失败,仍然检索递归目录中的所有文件。

Sub test()
    Rows("5:" & Rows.Count).ClearContents
    Dim fileSpec As String, files As Variant
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = -1 Then
            Folder = .SelectedItems(1)
        Else
            Exit Sub
        End If
    End With
    fileSpec = Folder
    Debug.Print Folder
    ' How to file filter to select only files with a specific *.dbf extension?
    ' How to get the path without the file name and place into another column?
    files = Split(CreateObject("wscript.shell").exec("cmd /c dir " & Chr(34) & fileSpec & Chr(34) & " /b/s ").stdout.readall, vbCrLf)
    ActiveSheet.Range("C5").Resize(UBound(files)).Value = Application.WorksheetFunction.Transpose(files)
End Sub
4

1 回答 1

1

我添加了一个Dim声明,folder因此没有错误。然后我添加*.TXT到您的 WSript 代码中。这现在只返回文本文件。

Sub test()
    Rows("5:" & Rows.Count).ClearContents
    Dim fileSpec As String
    Dim files As Variant
    Dim folder As Variant

    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = -1 Then
            folder = .SelectedItems(1)
        Else
            Exit Sub
        End If
    End With
    fileSpec = folder
    Debug.Print folder
    ' How to file filter to select only files with a specific *.dbf extension?
    ' How to get the path without the file name and place into another column?
    files = Split(CreateObject("wscript.shell").exec("cmd /c dir " & Chr(34) _
            & fileSpec & "\*.txt" & Chr(34) & " /b/s ").StdOut.ReadAll, vbCrLf)
    ActiveSheet.Range("C5").Resize(UBound(files)).Value = _
            Application.WorksheetFunction.Transpose(files)
End Sub
于 2019-04-09T06:49:18.470 回答