如何用EXCEL VBA读入固定格式的TXT文档

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用EXCEL VBA读入固定格式的TXT文档相关的知识,希望对你有一定的参考价值。

我现在有一个TXT文档,里面的文本有固定格式,如下图所示。现在想用VBA导入到EXCEL中,并实现如图中所示的格式。
另外,在VBA中还想实现读入两个TXT文档,并根据位置序号进行比较,看两个文档中同一项目编码下的位置序号是否有变动,并显示结果。

写一个示例吧:
你依据着改:
With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\infor.txt", _
Destination:=Range("A1"))
.Name = "infor_2"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 936
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierSingleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
参考技术A 可以录制一段宏,导入一个文本文件,会产生如上的代码:
Workbooks.OpenText Filename:=ThisWorkbook.Path & "\" & sTemp, Origin _
:=936, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array( _
Array(0, 2), Array(22, 2), Array(39, 2), Array(50, 2), Array(51, 2), Array(52, 2), Array(60 _
, 2), Array(80, 2), Array(92, 2), Array(143, 2), Array(149, 2), Array(157, 2), Array(216, 2) _
, Array(222, 2), Array(225, 2), Array(254, 2), Array(255, 2), Array(263, 2)), _
TrailingMinusNumbers:=True

然后用如下语句去循环导入所有的文本文件,导入后可以再用其它控制语句去处理:
Set Fso = New FileSystemObject
Set aFolder = Fso.GetFolder(ThisWorkbook.Path)
For Each aFile In aFolder.Files
... ...
... ...
next
参考技术B 参考下:
Sub ReadFile()
Dim dDate As Date
Dim sCustomer As String
Dim sProduct As String
Dim dPrice As Double
Dim sFName As String
Dim iFNumber As Integer 'File number
Dim lRow As Long 'Row number in worksheet
sFName = "C:\VBA_Prog_Ref\Chapter12\JanSales.txt"
'获得未被使用的文件号
iFNumber = FreeFile
'打开文件准备输入
Open sFName For Input As #iFNumber
Sheet2.Cells.Clear ‘清除表格内容
lRow = 2
Do
'从txt 文件读取内容到Excel
Input #iFNumber, dDate, sCustomer, sProduct, dPrice
With Sheet2
.Cells(lRow, 1) = dDate
.Cells(lRow, 2) = sCustomer
.Cells(lRow, 3) = sProduct
.Cells(lRow, 4) = dPrice
End With
'移动到下一行
lRow = lRow + 1
'读取文件,直到文件结尾
Loop Until EOF(iFNumber)
'关闭文件
Close #iFNumber
End Sub

如何用VBA将excel中的数据转化成word文档

如图,我想生成一个word文档,里面的圈红色的地方 可以用EXCEL表中的数字代替(包括门店信息,电子券信息和收回,收回占比信息。跪求代码!!!!

步骤一、先进入Excel表格,然后选中需要导入到Word文档中的区域,按下 Ctrl+C 复制;
步骤二、打开Word,然后选择菜单栏的“编辑”中的“选择性粘贴”,在“形式”下面选中“Microsoft Office Excel 工作表 对象”然后确定;
  此时,就已经把编辑好的Excel表格导入到Word中了,有的人这时肯定会说,这还不是和Word中表格没什么却别啊!确实,就这样用肉眼看,根本就看不错这个表格和Word中做的表格有什么不一样之处;
  区别肯定是有的,不信你双击表格看看,会是什么效果,没错把,导入的表格和Excel中的表格一模一样,当然,这个表格也可以自由拖动它的长和宽,还可以运用Excel中的公式呢!
参考技术A word中合并邮件功能,能转换成word文档

以上是关于如何用EXCEL VBA读入固定格式的TXT文档的主要内容,如果未能解决你的问题,请参考以下文章

如何用vba读取多个txt文件名和txt文件内容写入excel中?

如何用vba实现在EXCEL固定区域坐标内点击单元格,显示日期控件

如何用EXCEL的VBA控制WORD文档?

如何用VBA将excel表导出成文本类型的文件?

如何用VBA将EXCEL中的若干的数据导入不同的word文档

请问,在Excel中如何用VBA提取数据后保留原格式不变?