龙空技术网

VBA|文件处理05:处理文本文件

小智雅汇 798

前言:

而今咱们对“vba 读入文本文件”大概比较注重,我们都想要剖析一些“vba 读入文本文件”的相关知识。那么小编在网摘上网罗了一些有关“vba 读入文本文件””的相关内容,希望你们能喜欢,大家一起来学习一下吧!

Excel可以通过VBA与文本文件进行交互。

目录

1 创建文本文件

2 将工作表保存为文本文件

3 添加数据到文本文件

4 读取文本文件中的数据

1 创建文本文件

1.1 使用VBA语句创建文本文件

Sub 创建文本文件()

Dim sFName As String, iFNumber As Integer, r As Long

sFName = Application.InputBox(prompt:="请输入文本文件的名称:", _

Title:="输入文件名称", Type:=2)

If sFName = "False" Or sFName = "" Then Exit Sub

sFName = ThisWorkbook.Path & "\" & sFName & ".txt"

iFNumber = FreeFile '获取可用文件号

Open sFName For Output As #iFNumber '用Output方式打开文件

Write #iFNumber, "新建文本文件" '向文件中写入数据

Close #iFNumber '关闭文件

End Sub

1.2 使用FSO对象模型创建文本文件

Sub FSO创建文本文件()

Dim fso As New FileSystemObject

Dim oStream As TextStream

Dim sFName As String

sFName = Application.InputBox(prompt:="请输入文本文件的名称:", _

Title:="输入文件名称", Type:=2)

If sFName = "False" Or sFName = "" Then Exit Sub

sFName = ThisWorkbook.Path & "\" & sFName & ".txt"

'创建文本流对象

Set oStream = fso.CreateTextFile(Filename:=sFName, OverWrite:=True)

oStream.WriteLine "新建文本文件" '向文本流对象中写入数据

oStream.Close '关闭文本流对象

Set oStream = Nothing

Set fso = Nothing

End Sub

2 将工作表保存为文本文件

Sub 工作表保存为文本文件()

Dim sFName As String

sFName = Application.InputBox(prompt:="请输入文本文件的名称:", _

Title:="输入文件名称", Type:=2)

If sFName = "False" Or sFName = "" Then Exit Sub

sFName = ThisWorkbook.Path & "\" & sFName & ".txt"

On Error Resume Next

If Len(Dir(sFName, vbDirectory)) > 0 Then

If MsgBox("该文件已经存在,是否删除?", vbQuestion + vbYesNo) = vbYes Then

Kill sFName '删除已有的同名文件

Else

Exit Sub

End If

End If

On Error GoTo 0

Set ws1 = Worksheets("Sheet1")

ActiveWorkbook.SaveAs Filename:=sFName, FileFormat:=xlCSV

MsgBox "保存成功!"

ActiveWorkbook.Close SaveChanges:=False

End Sub

3 添加数据到文本文件

Sub 添加数据到文本文件()

Dim fso As New FileSystemObject

Dim oStream As TextStream

Dim sFName As String

sFName = Application.GetOpenFilename("文本文件(*.txt),*.txt,所有文件(*.*),*.*", _

1, "打开文本文件")

If sFName = "False" Then Exit Sub

'打开文件为文本流对象

Set oStream = fso.OpenTextFile(Filename:=sFName, IOMode:=ForAppending)

With oStream '追加数据

.WriteLine "追加测试数据第1行!"

.WriteLine "追加测试数据第2行!"

.WriteLine "追加测试数据第3行!"

End With

oStream.Close '关闭文本流对象

Set oStream = Nothing

Set fso = Nothing

End Sub

4 读取文本文件中的数据

4.1 使用VBA语句获取文件中的数据

Sub 读取文本文件数据()

Dim str1 As String, sFName As String, iFNumber As Integer, r As Long

sFName = Application.GetOpenFilename("文本文件(*.txt),*.txt,所有文件(*.*),*.*", _

1, "打开文本文件")

If sFName = "False" Then Exit Sub

iFNumber = FreeFile '获取可用文件号

Open sFName For Input As #iFNumber '用Input方式打开文件

ActiveSheet.Cells.Clear

r = 2

Do

Line Input #iFNumber, str1

ActiveSheet.Cells(r, 1) = str1

r = r + 1

Loop Until EOF(iFNumber)

Close #iFNumber '关闭文件

End Sub

4.2 使用FSO对象模型获取文件中的数据

Sub FSO读文件数据()

Dim fso As New FileSystemObject, oStream As TextStream

Dim sFName As String, str1 As String, r As Long

sFName = Application.GetOpenFilename("文本文件(*.txt),*.txt,所有文件(*.*),*.*", _

1, "打开文本文件")

If sFName = "False" Then Exit Sub

'打开文件创建文本流对象

Set osteam = fso.OpenTextFile(Filename:=sFName, IOMode:=ForReading)

ActiveSheet.Cells.Clear

r = 2

Do

str1 = oStream.ReadLine

ActiveSheet.Cells(r, 1) = str1

Loop Until oStream.AtEndOfStream

oStream.Close '关闭文件

Set oStream = Nothing

Set fso = Nothing

End Sub

-End-

标签: #vba 读入文本文件 #vb读取txt文件内容