在excel中可以使用“数据”选项卡下的“获取外部数据”组中的“自文本”功能导入文本文档的数据,如下图所示

在excel vba中内置了QueryTable对象可以实现上述导入外部文本文档的数据。
本文介绍如何使用vbal中内置的QueryTable对象导入外部文本文档的数据。
QueryTable对象不仅可以导入外部文本文档的数据,还可以导入网页中的表格数据,还可以连接利用ADO技术访问的外部数据源的数据。
在vba中用QueryTable对象导入外部文本文档的语法与利用excel的分列功能分列非常相似。
比如如下代码将C盘中的1.TXT文本文档导入excel中,并且删除连接,断开查询:
Sub QQ1722187970()
Dim oWK As Worksheet
Set oWK = Excel.ActiveSheet
sFilePath = "c:\1.txt"
sText = "TEXT;" & sFilePath
Dim oQB As QueryTable
With oWK
Set oQB = oWK.QueryTables.Add(sText, .Range("a1"))
With oQB
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = False
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
'指定是从第几行开始导入数据
.TextFileStartRow = 1
'设置文本的解析类型是以固定宽度还是以固定分隔符
.TextFileParseType = xlDelimited
'设置文本的限定符
.TextFileTextQualifier = xlTextQualifierDoubleQuote
'设置是否将连续的分隔符视为一个
.TextFileConsecutiveDelimiter = False
'设置是否以Tab为分隔符
.TextFileTabDelimiter = False
'设置是否以分号为分隔符
.TextFileSemicolonDelimiter = False
'设置是否以逗号为分隔符
.TextFileCommaDelimiter = False
'设置是否以空格为分隔符
.TextFileSpaceDelimiter = True
'设置其它的分隔符
.TextFileOtherDelimiter = ""
'每个列用的格式
.TextFileColumnDataTypes = Array(1, 1, 1, 1)
'当以固定宽度导入时,设置每个列指定的列宽
.TextFileFixedColumnWidths = Array(3, 5, 31)
'把带负号-的文本当做数字
.TextFileTrailingMinusNumbers = True
'异步更新
.Refresh BackgroundQuery:=False
.MaintainConnection = False
'以下两句最关键,只有加这两句,才不会再更新
.WorkbookConnection.Delete
.Delete
End With
End With
End Sub


发表评论