Если вы хотите загрузить Текстовые файлы на этом же листе, вы можете попробовать использовать ADO.
Что-то вроде:
Sub conscious()
Dim con As ADODB.Connection, rec As ADODB.Recordset
Set con = New ADODB.Connection: Set rec = New ADODB.Recordset
Dim datasource As String, txtfiles As Variant _
, txt1 As String, txt2 As String
txtfiles = Application.GetOpenFilename(FileFilter:="CSV Files, *.csv", _
MultiSelect:=True)
datasource = Left(txtfiles(1), InStrRev(txtfiles(1), "\"))
txt1 = "[" & Dir(txtfiles(1)) & "]"
txt2 = "[" & Dir(txtfiles(2)) & "]"
Dim sconnect As String
sconnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & datasource & _
";Extended Properties=""Text;HDR=YES;FMT=Delimited(,)"";"
con.Open sconnect
Dim sqlstr As String
sqlstr = "SELECT * FROM " & txt1 & _
"UNION ALL SELECT * FROM " & txt2
rec.Open sqlstr, con, adOpenStatic, adLockReadOnly
With Sheets("Sheet1")
Dim lrow As Long
lrow = .Range("A" & .Rows.Count).End(xlUp).Row
If lrow > 1 Then .Range("A2:J" & lrow).ClearContents
.Range("A2").CopyFromRecordset rec
End With
Application.ScreenUpdating = True
rec.Close: con.Close
Set rec = Nothing: Set con = Nothing
End Sub
В основном это предложит вам выбрать файлы.
Я использовал файл CSV как образец. Отрегулируйте в соответствии.
Вы можете выбрать так много файлов, но это обрабатывает только первые 2 файла.
Если вам нужно обрабатывать больше, вам придется перебирать выбранные файлы. HTH
В принципе, это не игнорирует его. Это просто как-то перезаписывает первую установленную связь с новой. Таким образом, последний текстовый файл отражается только в файле. Вы можете загрузить его в разные листы или использовать ADO. – L42