请按以下代码头的提示,将以下代码复制后粘贴于你的活动文档(带表格数据统计的目标文档的THISDOCUMENT代码窗口中,ALT+F11,进入VBE) '* +++++++++++++++++++++++++++++
'* Created By I Love You_Word!@ExcelHome 2005-6-6 4:55:30
'仅测试于System: Windows NT Word: 10.0 Language: 2052
'^The Code CopyIn [ThisDocument-ThisDocument]^'
'* -----------------------------
Option Explicit
Sub ReadTxtWriteInWord()
'这是一个读写指定的文本文件中的数据写到WORD中的小程序
Dim MyTextPath As String, aTable As Table, aArray As Variant
Dim RowId As Integer, ColId As Byte, RowCount As Integer
Dim TextLine As String, MyText As String, ArrayText() As String
On Error Resume Next '忽略错误
Application.ScreenUpdating = False '关闭屏幕更新
With ThisDocument '本文档
MyTextPath = .Path '本文档的路径(请先保存该文档),
'此处亦可直接修改你的记事本文件的路径,如"C:\TEST\MyTxt.Txt"
Set aTable = .Tables(1) '定义一个表格对象(如果有多表,则遍历表格)
RowCount = aTable.Rows.Count '取得指定表格的行数
RowId = 3 '初始化变量,根据附件为从第三行开始写数据
ColId = 1 '初始化变量,根据附件为从第一列开始,结束于第七列
'打开指定路径下的TXT文件
Open MyTextPath & "\MyText.TXT" For Input As #1
Do While Not EOF(1) '如果不是到了文件结束
Line Input #1, TextLine '从已打开的顺序文件中读出一行并将它分配给TextLine变量
MyText = MyText & TextLine & " " 'MyText累加文本行,并在行末加以空格,为数组分隔作准备
Loop
Close #1 '关闭文件
' Debug.Print MyText
'定义一个STRING型一维数组,以空格键作为取得的MyText变量的数组分隔符
ArrayText = VBA.Split(MyText, " ")
'在数组中循环
For Each aArray In ArrayText
'如果aArray为非空(在文本文件中,有多个空格存在,其中一些空格,也成为数组中的一个数据)
If aArray <> "" Then
'将该有效数据写到指定的表格的单元格中
aTable.Cell(RowId, ColId).Range = aArray
ColId = ColId + 1 '每写一个数据,列号+1
'如果ColId>7则换行,并初始化变量为1,即转移到下一行的第一列
If ColId > 7 Then ColId = 1: RowId = RowId + 1
'如果RowId大于总行数,则退出程序
If RowId > RowCount Then Exit Sub
End If
Next
End With
'恢复屏幕更新
Application.ScreenUpdating = True
End Sub
'----------------------
[此贴子已经被作者于2005-6-6 4:57:14编辑过] |