VBA导入多个文本文件。保持移动数据

时间:2015-12-06 01:49:11

标签: excel vba text import

我正在处理宏以将文本文件导入工作表。我录制了一个宏并稍微调整了代码以满足我的需要。我需要为多个文件执行此操作,因此我将代码复制并粘贴到其他宏,我遇到了问题。第一次迭代效果很好,但是当我运行第二次迭代时,它将我从几列开始导入的原始数据从列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

由于 最大

2 个答案:

答案 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

首先导入所有文件,然后执行。文本到列