使用VBA将Excel txt文件导入(特定列)到一个表中

当我试图理清我的VBA代码时,我发现这个论坛。 目前为止我只有很less的VBA编程经验。 这就是为什么我自两天以来一直在研究解决我的问题,没有成功。 但是,我非常有兴趣提供我的编程技巧,我希望你能帮助我做到这一点。

基本上我想导入一个TXT文件到名为“TblDataImport”的表格末尾的名为“DataImport”的活动Excel工作簿中。

TXT文件由13个由标签分隔的列组成:

  1. row:CompanyName
  2. 行: date 名称 CustomerGroup CustomerNo SalesOrder ItemNumber ItemGroup LineStatus 数量 价格 折扣 DiscountPercentage NetAmount
  3. 行:所有相应的值…

我不需要导入第一行和第二行,因为我希望将数据导入到包含标题的表中。 另外我只需要十三列中的七列,那些以粗体形成的列。 如果用户可以使用打开的文件对话框来select文本文件,那将是完美的。

如果我手动打开TXT文件并将其内容粘贴到Excel,它已经包含在内
在正确的列。 所以格式不应该有任何的缺陷。

我很好奇你提出的解决scheme。

用macros录像机,我只能满足我的一些条件:

Sub DataImport() ' DataImport Makro Sheets("DataImport").Select With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;C:\Users\Sales.txt", Destination:=Range _ ("$A$1")) .Name = "AxaptaSales" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 850 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(4, 1, 9, 9, 1, 9, 9, 9, 1, 1, 1, 9, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With End Sub 

但是,此代码只将所有列粘贴到单元格A1(不在表的末尾)。 还包括第一和第二行以及我不需要的列。

如果将以下代码添加到上面的代码中,则会将其添加到已经在工作表中的数据的末尾

 Sub DataImport() Dim LastRow As Integer Dim LastRow2 As integer LastRow = Range("A65536").end(xlup).row LastRow = LastRow + 1 ' DataImport Makro Sheets("DataImport").Select With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;C:\Users\Sales.txt", Destination:=Range _ ("$A" & LastRow)) .Name = "AxaptaSales" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 850 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(4, 1, 9, 9, 1, 9, 9, 9, 1, 1, 1, 9, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With Range("A" & LastRow & ":A" & LastRow + 1).entireRow.delete LastRow2 = Range("A65536").end(xlup).row Range("H" & LastRow & ":M" & LastRow2).entirecolumn.delete 

结束小组

我认为这应该做你需要的(但我自己仍然是一个新手)