如何在目录中比较文件名并在Excel VBA中返回匹配的名称

时间:2019-05-23 07:04:43

标签: arrays excel vba string-comparison file-management

我正在尝试为以特定方式合并.pptx文件和.xlsx文件的宏编写VBA代码。我已经弄清楚了如何编码合并部分。但是,我有一个包含数百个需要合并的文件的目录,就目前而言,我必须使用文件对话框选择每个.xls文件和.pptx文件。我想通过编写代码来扫描整个目录中的文件来加快整个过程,该代码是我在文件对话框中选择的,然后返回匹配的.xls和.pptx文件的路径,然后合并每个匹配项。 匹配文件的名称使用以下语法类似: XLS文件:123ABC456_sheets_011.xlsx PPTX文件:123ABC456_slides_011.pptx 因此,为了进行比较,只需比较前9位数字即可。

我试图编写一个代码,该字符串创建具有特定目录中所有文件路径的字符串数组,但是由于我对VBA经验不足,所以我不知道如何查看数组充满所有文件名。在这一点上我被困住了。我想最好是创建两个字符串数组,一个创建一个.xlsx文件,另一个创建一个.pptx文件,然后以某种方式将它们相互比较,但是我不知道该如何解决。 在下面,您可以看到我到目前为止所拥有的。如果有人能够帮助我,我将感到非常高兴!

Sub IdentifyFiles()

    Dim selectedPATH As String
    Dim XLSArray As Variant
    Dim i As Integer
    Dim oFile As Object
    Dim oFSO As Object
    Dim oFolder As Object
    Dim oFiles As Object

    'Dialog to choose the folder
    With Application.FileDialog(msoFileDialogFolderPicker)
        .AllowMultiSelect = False
        .Title = "Please choose folder"
        If .Show = -1 Then
            'ok click
            selectedPATH = .SelectedItems(1)
        Else
            'cancel click
        End If
    End With

    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oFolder = oFSO.Getfolder(selectedPATH)
    Set oFiles = oFolder.Files

    If oFiles.Count = 0 Then MsgBox "no contents in chosen folder"

    ReDim XLSArray(1 To oFiles.Count)
    i = 1
    For Each oFile In oFiles
        XLSArray(i) = oFile.Name
        i = i + 1
    Next

End Sub

0 个答案:

没有答案