我在尝试整理我的VBA代码时发现了这个论坛。到目前为止,我对VBA编程的经验很少。这就是为什么我已经研究了两天来解决我的问题,但没有成功。但是,我对提高编程技巧感兴趣,希望你能帮助我这样做。
基本上我想将一个TXT文件导入活动的Excel工作簿,名为“DataImport”的工作表位于名为“TblDataImport”的表的末尾。
TXT文件由13列组成,这些列由制表符分隔:
我不需要导入第一行和第二行,因为我想将数据导入到包含标题的表中。此外,我只需要13列中的7列,那些用粗体格式化的列。如果用户可以使用打开文件对话框选择文本文件,那将是完美的。
如果我手动打开TXT文件并将其内容粘贴到Excel中,则已包含在内 在右栏中。所以格式化不应该有任何陷阱。
我很想知道你提出的解决方案。
使用宏录像机,我只能满足一些条件:
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中(不在表格的末尾)。它还包括第一行和第二行以及我不需要的列。
答案 0 :(得分:0)
如果您在上面的代码中添加以下内容,则会将其添加到工作表中已有数据的末尾
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
End Sub
我认为这应该按照你的要求做(但我自己还是新手)