2014-11-03 7 views
0

Есть ли способ импортировать два файла txt в одну и ту же книгу?VBA импортирует два файла txt в одну рабочую книгу

Я могу импортировать один текстовый файл легко с

ActiveSheet.QueryTables.Add(Connection:= _ 

Однако всякий раз, когда я добавить еще он просто игнорирует первый текстовый файл.

Большое спасибо

+0

В принципе, это не игнорирует его. Это просто как-то перезаписывает первую установленную связь с новой. Таким образом, последний текстовый файл отражается только в файле. Вы можете загрузить его в разные листы или использовать ADO. – L42

ответ

0

ли это игнорировать первый текстовый файл или он перезаписать его, если ActiveSheet не изменится?

Вы можете явно указать Листы (ы) перед методом .Add или, если вы хотите оба импорта на одном листе, есть параметр Destination: =, который позволяет вам указать начальный диапазон. Ссылка может быть найдена here.

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

Смежные вопросы