我正在处理宏以将文本文件导入工作表。我录制了一个宏并稍微调整了代码以满足我的需要。我需要为多个文件执行此操作,因此我将代码复制并粘贴到其他宏,我遇到了问题。第一次迭代效果很好,但是当我运行第二次迭代时,它将我从几列开始导入的原始数据从列AA开始向右移动,并在A列中发布下一批数据,但应该更多地向下排列使用第一批中的最后一行数据。任何人都可以建议为什么这不只是在上一次迭代的最后一行下面添加新数据?这是我的代码。 (已编辑) - 我将粘贴的代码更改为显示最后一行的第二次迭代,而不是第一行的硬编码。
Sub Upload2()
row = ThisWorkbook.Sheets("Data Dump").Cells(Rows.Count, 1).End(xlUp).row
filepath = Worksheets("Upload").Cells(5, "H")
Worksheets("Data Dump").Activate
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" + filepath, Destination:=Cells(row, "A"))
'.CommandType = 0
.Name = "bench test"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 65001
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _
1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Dim Cn As Variant
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Each Cn In ThisWorkbook.Connections
Cn.Delete
Next Cn
For Each Cn In ActiveSheet.QueryTables
Cn.Delete
Next Cn
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
由于 最大
答案 0 :(得分:0)
编辑: 发布错误代码后发布。
代码正在这样做,因为它从上一个文件的最后一行开始导入下一个文本文件。
替换此行:
row = ThisWorkbook.Sheets("Data Dump").Cells(Rows.Count, 1).End(xlUp).row
用这个
row = 2 + ThisWorkbook.Sheets("Data Dump").Cells(Rows.Count, 1).End(xlUp).row
建议添加2
行,以便在每个文本文件之间留下一个空白行,以便日后进行识别和完整性检查。
答案 1 :(得分:-1)
在较新版本的Excel中,一旦使用了文本到列,就会设置整个工作表以从选择的列中执行此操作。
在后续循环中,跳过文本到列部分,然后将文件粘贴到col A
首先导入所有文件,然后执行。文本到列