我发现代码存在问题:
如果我的文件夹名称有不同的名称(例如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
答案 0 :(得分:0)
您需要创建一个单独的分支来处理类似命名的文件。现在看来,你的A值没有被重新初始化,下次你在新工作表上写一个不同命名的文件时,你将从最后一张表在前一张表上结束的行开始。
现在解决当前的问题,您正在将新的QueryTable写入已经由现有QueryTable占用的空间。发生这种情况时,Excel将另一张桌子翻过来。您可能必须添加多于一行,因为该表可能具有总计或底部的某些内容。
添加:
Debug.print ws.cells(A,1).address
在A = MyCount + 1
行之后,查看该单元格是否被现有的QueryTable占用。