こんな感じかな?
Sub まとめ()
Dim vTargetPath, vDestShNames, vWidthToCopy, Msg
Dim targetFile As Workbook
Dim destWsh As Worksheet
Dim n As Long
Dim fPath As String
Dim qt As QueryTable
vTargetPath = ActiveSheet.Range("A2:A6").Value
vDestShNames = Array("Sheet1", "Sheet2", "Sheet3", "Sheet4", "Sheet5")
vWidthToCopy = Array(40, 8, 27, 40)
Application.ScreenUpdating = False
For n = 1 To 5
fPath = vTargetPath(n, 1)
Set destWsh = ThisWorkbook.Worksheets(vDestShNames(n - 1))
destWsh.UsedRange.Clear
If Dir(fPath) = "" Then
Msg = Msg & vbLf & fPath '不存在
ElseIf n < 5 Then
Set targetFile = Workbooks.Open(fPath) '読み込み
With targetFile.Sheets(1)
.Range(IIf(n = 3, "A2", "A1"), .Cells(.Rows.Count, "A").End(xlUp)). _
Resize(, vWidthToCopy(n - 1)).Copy
destWsh.Range("A1").PasteSpecial Paste:=xlPasteAll
.Range("A1").Copy 'dummyAction
targetFile.Close SaveChanges:=False
End With
Else '5番目(csv)の場合はクエリで処理
Set qt = destWsh.QueryTables.Add( _
Connection:="TEXT;" & fPath, _
Destination:=destWsh.Range("A1"))
With qt
.TextFileParseType = xlDelimited
.TextFileCommaDelimiter = True
.TextFileColumnDataTypes = [Column(A:AN)^0+1] '文字型読込
.Refresh BackgroundQuery:=False
.Delete 'QueryTable を削除
End With
End If
Next n
Application.ScreenUpdating = True
If Msg = "" Then
MsgBox "完了しました"
Else
MsgBox "以下のファイルが存在しません" & vbLf & Msg
End If
End Sub