2013-11-26 67 views
1

我發現了一些問題,我的代碼:VBA的Excel結合2文件夾中的文本文件

此代碼將插入精細的數據,如果我的文件夾名稱有不同的名稱(例如1234與1235),每個文件夾有很多的文本文件。都導入到具有正確文件夾名稱的單獨工作表,並從列a開始。問題是,如果文件夾名稱是相同的(1234和1234),它將導入到相同的工作表(1234),但單獨的列(列b中的第1個文件夾和列a中的第2個文件夾),我希望它從最後一行繼續在列a。

我在想:我必須在這個子之後存儲MyCount值嗎?

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會將另一張桌子擋住。您可能必須添加多於一行,因爲表格可能有總計或底部的東西。

地址:

Debug.print ws.cells(A,1)。地址

A = MyCount + 1線後,看看是否能細胞是通過現有的QueryTable佔據。