2013-11-26 3 views
1

Я нашел некоторые проблемы с моим кодом:VBA Excel комбинируя 2 папки текстового файла

Этот код будет вставлять данные тонкие, если мое имя папки имеют другое имя (напр 1234 с 1235), каждая папка имеет много текстовых файлов. Оба импортируются в отдельные листы с правильным именем папки и начинаются с столбца a. Проблема в том, что если имя папки одинаково (1234 и 1234), оно будет импортировано на тот же лист (1234), но отдельный столбец (1-я папка в столбце b и 2-й папке в столбце a), я хочу, чтобы она продолжалась из последней строки в столбце a.

Im думает: я должен сохранить значение MyCount после этого sub?

Sub InsertData(ByVal path As String) 

    Dim filename As Variant 
    Sheet = ActiveSheet.Name 

    filename = path & Sheet & "\*.txt" 
    If (filename = False) Then 
     Exit Sub 
    End If 
    Dim StrFile As String 
    StrFile = Dir(filename) 
    Dim MyCount As Integer 
    Dim A As String 
    A = 1 
    MyCount = Application.CountA(Range("A:A")) 


    Do While Len(StrFile) > 0 
      Dim ws As Excel.Worksheet 
      Set ws = Excel.ActiveSheet 
      Application.DisplayAlerts = False 
      Application.DisplayAlerts = True 
      Dim File As Variant 
      File = path & Sheet & "\" & StrFile 

      With ws.QueryTables.Add("TEXT;" & File, ws.Cells(A, 1)) 
      .FieldNames = True 
      .AdjustColumnWidth = True 
      .TextFileParseType = xlDelimited 
      .TextFileTextQualifier = xlTextQualifierDoubleQuote 
      .TextFileConsecutiveDelimiter = False 
      .TextFileCommaDelimiter = True 
      .TextFileColumnDataTypes = columnFormats 
      .TextFileColumnDataTypes = Array(9, 1, 1, 9) 
      .Refresh 
      End With 
     StrFile = Dir 
     MyCount = Application.CountA(Range("A:A")) 
     A = MyCount + 1 
    Loop 

End Sub 
+1

Я думаю, что вам не хватает кода. Где определяется StrFile? – Joe

+0

StrFile до этого, я пытаюсь скопировать только важную часть, но сейчас я ее отредактирую :) – Aldin

ответ

0

Вам нужно сделать отдельную ветку, чтобы обрабатывать как именованный файл. В настоящее время ваше значение A не переинициализируется, и в следующий раз, когда вы перейдете на другой файл с именованием на новом листе, вы запустите его из строки, которая закончилась последней таблицей на предыдущем листе.

Теперь, перейдя к вашей текущей проблеме, вы пишете новый QueryTable в пространство, уже занятое существующим QueryTable. Когда это произойдет, Excel затмевает другую таблицу. Возможно, вам придется добавить более 1 строки, потому что таблица может иметь общую сумму или что-то внизу.

Добавить:

Debug.Print ws.cells (A, 1) .Address

После вашей A = MyCount + 1 линии и посмотреть, если эта ячейка занята существующей QueryTable.

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