在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
发表评论