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

我发现我的代码有一些问题:

如果我的文件夹名称具有不同的名称(例如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 

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

现在解决当前的问题,您正在将新的QueryTable写入已经被现有QueryTable占用的空间。 发生这种情况时,Excel会将另一个表格翻转过来。 您可能需要添加多于一行,因为表格可能总计或底部有一些东西。

加:

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

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