有没有办法在同一个工作簿中导入两个txt文件?
我可以使用
轻松导入一个txt文件ActiveSheet.QueryTables.Add(Connection:= _
但是每当我添加另一个时,它就会忽略第一个txt文件。
非常感谢
答案 0 :(得分:0)
是否忽略第一个文本文件,或者如果ActiveSheet没有更改,它是否会覆盖它?
您可以在.Add方法之前明确指定工作表,或者,如果您希望在同一工作表上同时进行两次导入,则可以使用Destination:=参数来指定起始范围。可以找到参考here。
答案 1 :(得分:0)
如果要在同一张纸中加载文本文件,可以尝试使用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