 <p>Suggest the use of <code>Defined Name Ranges</code> to hold the user maintained list <em>(as show in the picture below)</em></p> <p><img src="https://i.stack.imgur.com/lDiiH.png" alt="enter image description here"></p> <p>Let’s add a worksheet for user input of the requirements called “_Tables”. Then create <code>Defined Name Ranges</code>, for users to enter the requirements, called <code>"_Path"</code>, <code>"_Files"</code> and <code>"_SubFldrs"</code></p> <p>Then replace all the user’s input in current code </p> <pre><code>REPLACE THIS ''' With Application.FileDialog(msoFileDialogFolderPicker) ''' If .Show Then ''' myDir = .SelectedItems(1) ''' End If ''' End With ''' msg = "Enter File name and Extension" &amp; vbLf &amp; "following wild" &amp; _ ''' " cards can be used" &amp; vbLf &amp; "* # ?" ''' myExtension = Application.InputBox(msg) ''' If (myExtension = "False") + (myExtension = "") Then Exit Sub ''' Rtn = MsgBox("Include Sub Folders ?", vbYesNo) ''' SearchSubFolders = Rtn = 6 </code></pre> <p>with this in order to read the requirements from the worksheet "_Tables"</p> <pre><code> Set WshLst = ThisWorkbook.Sheets("_Tables") sPath = WshLst.Range("_Path").Value2 aFleKey = WshLst.Range("_Files").Value2 bSbFldr = UCase(WshLst.Range("_SubFldrs").Value2) = UCase("YES") aFleKey = WorksheetFunction.Transpose(aFleKey) </code></pre> <p>then Process the lists See below the entire code below. It's necessary to have the statement <code>Option Base 1</code> at the top of the module</p> <pre><code>Option Explicit Option Base 1 Sub Fle_FileSearch_List() Dim WshLst As Worksheet Dim sPath As String Dim aFleKey As Variant, vFleKey As Variant Dim bSbFldr As Boolean Dim vFleLst() As Variant Dim lN As Long Set WshLst = ThisWorkbook.Sheets("_Tables") sPath = WshLst.Range("_Path").Value2 aFleKey = WshLst.Range("_Files").Value2 bSbFldr = UCase(WshLst.Range("_SubFldrs").Value2) = UCase("YES") aFleKey = WorksheetFunction.Transpose(aFleKey) Rem To clear output location ThisWorkbook.Sheets(1).Columns(1).Resize(, 2).Clear Rem Process input list For Each vFleKey In aFleKey If (vFleKey &lt;&gt; "False") * (vFleKey &lt;&gt; "") Then Call Fle_FileSearch_Fldrs(sPath, CStr(vFleKey), lN, vFleLst, bSbFldr) End If: Next Rem Validate Results &amp; List Files found If lN &gt; 1 Then ThisWorkbook.Sheets(1).Cells(1).Resize(UBound(vFleLst, 2), 2) _ .Value = Application.Transpose(vFleLst) Else MsgBox "No file found" End If End Sub </code></pre> <p>Also some adjustments to the function <em>(now a procedure)</em> to allow the process of the list.</p> <pre><code>Sub Fle_FileSearch_Fldrs(sPath As String, _ sFleKey As String, lN As Long, vFleLst() As Variant, _ Optional bSbFldr As Boolean = False) Dim oFso As Object, oFolder As Object, oFile As Object Set oFso = CreateObject("Scripting.FileSystemObject") If lN = 0 Then lN = 1 + lN ReDim Preserve vFleLst(1 To 2, 1 To lN) vFleLst(1, lN) = "Files Found - Path" vFleLst(2, lN) = "Files Found - Name" End If For Each oFile In oFso.GetFolder(sPath).Files Select Case oFile.Attributes Case 2, 4, 6, 34 Case Else If (Not oFile.Name Like "~$*") * _ (oFile.Path &amp; "\" &amp; oFile.Name &lt;&gt; ThisWorkbook.FullName) * _ (UCase(oFile.Name) Like UCase(sFleKey)) Then lN = lN + 1 ReDim Preserve vFleLst(1 To 2, 1 To lN) vFleLst(1, lN) = sPath vFleLst(2, lN) = oFile.Name End If: End Select: Next If bSbFldr Then For Each oFolder In oFso.GetFolder(sPath).subfolders Call Fle_FileSearch_Fldrs(oFolder.Path, sFleKey, lN, vFleLst, bSbFldr) Next: End If End Sub </code></pre>