0

我开始使用宏,我有一个包含 100 多个文件的列表,这些文件要在 VBA 中打开,其名称如下:Mark001.xls Mark_001_initial.xls Mark001_improvement.xls Mark002.xls Mark002_initial。Marc002_Improvement.xls Pol001.xls ...

Sub Macro1()
Dim FilesToOpen

FilesToOpen = Application.GetOpenFilename _
    (FileFilter:="EXLS Files(*.xls), *.xls," & "Mark??? Files (Mark???.xls), Mark???.xls", MultiSelect:=True, Title:="EXLS Files To Open")

End Sub

这将打开一个窗口来选择文件,但是没有文件可供选择,它无法识别它们

.txt 格式也有相同的文件,但我只需要打开 Mark001.xls 类型的文件,较大的名称无关紧要。

我还需要将它们复制到不同的文件夹。我尝试使用 OpenFile、SerchFile 和 selectFile 应用程序,但没有成功。

非常感谢你!

4

1 回答 1

1

对于Application.GetOpenFilename通配符仅适用于文件扩展名,如

FileFilter:="Excel files (*.xl*)," & "*.xl*"

这将返回所有 *.xls 和 *.xlsx 文件

其他选项:

Application.FileDialog (msoFileDialogOpen Or msoFileDialogFilePicker)

.

Sub openWildFile()     'use params to make it generic: "ByVal partialName As String"

    Const partialName   As String = "*Mark_"
    Const partialExt    As String = "*.xl*"

    Dim selectedFile    As String, dlg As Object        'A 3rd option is to use APIs

    Set dlg = Application.FileDialog(msoFileDialogOpen) 'Or (msoFileDialogFilePicker)

    With dlg

        .Title = "Select " & partialName & " File"

        With .Filters
            .Clear
            .Add partialName & " Files", partialExt
        End With

        .AllowMultiSelect = True
        .InitialFileName = partialName & partialExt

        If (.Show <> 0) Then selectedFile = Trim(.SelectedItems.Item(1))

    End With
End Sub

.

要复制文件,请使用:

FileCopy SourceFile, DestinationFile    ' Copy source file to target
于 2015-06-13T21:37:39.317 回答