Option Explicit
Sub ShouldAdjust()
' constants
' ws & ranges
Const ksWS = "Hoja1"
Const ksFolder = "FolderList"
Const ksFile = "FileList"
Const ksShould = "ShouldTable"
' others
Const ksX = "X"
' declarations
Dim rngFo As Range, rngFi As Range, rngS As Range
Dim fs As Object, fld As Object, fn As Object
Dim sPathSource As String, sFileSource As String
Dim sPathTarget As String, sFileTarget As String
Dim I As Long, J As Integer
' start
' ranges
Set rngFo = Worksheets(ksWS).Range(ksFolder)
Set rngFi = Worksheets(ksWS).Range(ksFile)
Set rngS = Worksheets(ksWS).Range(ksShould)
' file system
Set fs = CreateObject("Scripting.FileSystemObject")
' proceso
sPathSource = ActiveWorkbook.Path & Application.PathSeparator
With rngS
For I = 1 To .Rows.Count
' folders
sPathTarget = sPathSource & rngFo(I, 1).Value
If Not fs.FolderExists(sPathTarget) Then fs.CreateFolder sPathTarget
For J = 1 To .Columns.Count
' files
sFileSource = sPathSource & Application.PathSeparator & rngFi(1, J).Value
sFileTarget = sPathTarget & Application.PathSeparator & rngFi(1, J).Value
If .Cells(I, J).Value = ksX Then
If Not fs.FileExists(sFileTarget) Then _
fs.CopyFile sFileSource, sFileTarget, True
End If
Next J
Next I
End With
' end
' file system
Set fs = Nothing
' ranges
Set rngS = Nothing
Set rngFi = Nothing
Set rngFo = Nothing
' beep
Beep
End Sub