34、读取文本文件到工作表里。两种方法,两个示例,比较着看。早先大师的代码,忘了出处,忘见谅。代码如下
W0iVLe86.rar
(14.01 KB, 下载次数: 274)
Sub OneTxt() '打开一个txt文件
Dim Filename As Variant, extLine&, mArr() As String
Dim i%, j%
ChDir ThisWorkbook.Path
Filename = Application.GetOpenFilename("Text Files (*.txt), *.txt", , "请选取档案", , MultiSelect:=False)
If Filename = False Then Exit Sub '最后一个选项MultiSelect等于false表示只能选择一个文件,如下面的等于true可以选择多个文件
'选择多个文件的时候是一个数组,需要循环打开,一个的时候就是字符串
j = 1
With Worksheets("sheet1")
.Cells.ClearContents '删除第一个表的内容
Open Filename For Input As #1 ' 以只读的方式打开文件,参考open方法的帮助
Do While Not EOF(1) ' 循环至文件尾。
Line Input #1, TextLine ' 读入一行数据并将其赋予某变量
mArr = Split(TextLine, " ") '按空格分开这个字符,循环赋值给单元格
For i = 0 To UBound(mArr)
.Cells(j, i + 2) = mArr(i) '此处参考split函数的帮助
Next i
.Cells(j, 1) = Dir(Filename) '等于文件名
j = j + 1
Loop
Close #1 ' 关闭文件。
End With
End Sub
Sub TwoTxt() '打开多个txt文件
Dim txt As Object, j%, i%, m%
Dim TextLine As String
Dim Filename As Variant
ChDir ThisWorkbook.Path
Filename = Application.GetOpenFilename("Text Files (*.txt), *.txt", , "请选取档案", , MultiSelect:=True)
If Not IsArray(Filename) Then Exit Sub
Delete
For Each fn In Filename '在整个选择的范围内循环
m = m + 1
j = 1
Set FSO = CreateObject("Scripting.FileSystemObject")
Set txt = FSO.OpenTextFile(fn, 1, False) '打开文件,以只读方式打开
Do Until txt.AtEndOfStream '直到最后一个
TextLine = txt.ReadLine '与上例中的一样,读入一行数据并将其赋予某变量
mArr = Split(TextLine, " ") '按空格分开这个字符,循环赋值给单元格
For i = 0 To UBound(mArr)
Worksheets(m).Cells(j, i + 2) = mArr(i)
Next i
Worksheets(m).Cells(j, 1) = Dir(fn) '等于文件名
j = j + 1
Loop
txt.Close '关闭文件
Set txt = Nothing
Next
End Sub
|