VBA Excel结合2个文件夹文本文件

时间:2013-11-26 13:03:37

标签: excel vba excel-vba

我发现代码存在问题:

如果我的文件夹名称有不同的名称(例如1234和1235),此代码将插入数据,每个文件夹都有许多文本文件。两者都导入到具有正确文件夹名称的单独工作表,并从列a开始。问题是,如果文件夹名称相同(1234和1234),它将导入到同一张(1234)但是单独的列(列b的第一个文件夹和列a的第二个文件夹),我希望它从最后一行继续在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 个答案:

答案 0 :(得分:0)

您需要创建一个单独的分支来处理类似命名的文件。现在看来,你的A值没有被重新初始化,下次你在新工作表上写一个不同命名的文件时,你将从最后一张表在前一张表上结束的行开始。

现在解决当前的问题,您正在将新的QueryTable写入已经由现有QueryTable占用的空间。发生这种情况时,Excel将另一张桌子翻过来。您可能必须添加多于一行,因为该表可能具有总计或底部的某些内容。

添加:

Debug.print ws.cells(A,1).address

A = MyCount + 1行之后,查看该单元格是否被现有的QueryTable占用。