0

マクロを使い始めたところ、次のような名前の VBA で開くファイルのリストが 100 個以上あります。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 に答える