【C004】VB - 数据文件(一)顺序文件
1. 打开文件(Open)
Open 文件名 [For模式][Access 存取类型][锁定]As [#]文件号[Len=记录长度]
说明:
(1)文件名;
(2) 模式用于指定文件访问的方式,包括:
Append——从文件末尾添加 Binary——二进制文件
Input——顺序输入(输入给自己,从txt中取出) Output——顺序输出(输出到txt中)
Random——随机存取方式
(3)文件号(或称文件缓冲区)
(4)存取类型:访问文件的类型,为Read(只读)、Write(只写)、Read Write(读写)
(5)锁定:限制其他用户或其他进程对文件进行读写操作
Shared(共享)、LockRead(禁止读)、Lock Write(禁止写)、
Lock Read Write(禁止读写)
(6)Len:用来指定每个记录的长度(字节数)
示例: Open"d:\cj1.dat" For Output As #1
2. 关闭文件(Close)
打开的文件使用完后必须关闭。
关闭文件的语句格式:
Close[#] 文件号1[,[#] 文件号2…] ]
示例:
Close#1
1. Write语句
格式:Write#文件号 [,表达式表]
功能:将表达式的值写到与文件号相关的顺序文件中
每个Write语句向顺序文件写入一个记录(不定长),它会自动地用逗号分开每个表达式的值。给字符串加上双引号
在最后一个字符写入后,插入一个回车换行符(Chr(13) + Chr(10)),以此作为记录结束的标记。
示例:Write#1, "Good Afternoon", 1998
Private Sub CommandButton1_Click() Dim num As String * 6, name As String * 8, score As Integer num = TextBox1.Text name = TextBox2.Text score = Val(TextBox3.Text) Write #1, num, name, score TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox1.SetFocus End Sub Private Sub CommandButton2_Click() Close #1 End End Sub Private Sub UserForm_Initialize() Open ThisWorkbook.Path & "\1.txt" For Output As #1 End Sub
运行结果~
读取数据,用For...Next 语句
Sub 的开发商的() Dim n As String, m As String, s As Integer Open ThisWorkbook.Path & "\1.txt" For Input As #1 For i = 1 To 5 Input #1, n, m, s Cells(i, 1) = n Cells(i, 2) = m Cells(i, 3) = s Next Close #1 End Sub
2. Print语句
格式:Print #文件号[,表达式表]
作用与Write一样。将一个或多个表达式的值写到与文件号相关的顺序文件中。其输出数据格式与Print方法在窗体上输出格式相似。
示例:
Print #1, num, name, score ‘对应按区格式
Print #1, num;name;score ‘对应紧凑格式
先用Input方式打开文件,然后采用Input或LineInput语句从文件中读出数据。通常,Input用来读出Write写入的记录内容,而Line Input用来读出Print写入的记录内容
1.Input语句
一般格式:Input#文件号,变量名表
功能:从指定文件中读出一个记录。变量个数和类型应该与要读取的记录所存储的数据一致。
打开文件时,文件指针指向文件中的第1个记录,以后每读取一个记录,指针就向前推进一次。如果要重新从文件的开头读数据,则先关闭文件后打开
距离:
Sub sj() Open ThisWorkbook.Path & "\data1.txt" For Output As #1 a = 123: b$ = "ABCD" '在同一行赋值,用“:” Write #1, a, b$ Close #1 Open ThisWorkbook.Path & "\data1.txt" For Input As #1 Input #1, c, d$ Close #1 Debug.Print c, d$ End Sub
Sub dfjslkdf() Open ThisWorkbook.Path & "\num2.txt" For Append As #1 For i = 51 To 200 If i Mod 7 = 0 Then Write #1, i Next Close #1 End Sub Sub dfhdfdffdfdfdk() k = 0 Open ThisWorkbook.Path & "\num2.txt" For Input As #1 Do While Not EOF(1) Input #1, x Debug.Print x, k = k + 1 If k Mod 4 = 0 Then Debug.Print Loop End Sub
Debug.Print i 一行一行的输出
Debug.Print i, 在一行输出,中间空很多的空格,具有一定的格式
Debug.Print i; 在一行输出,中间空很少的空格,具有一定的格式
可以加入If i Mod 2 = 0 Then Debug.Print 可以进行换行
Print也有相似的用法:
从TXT中读取数据,数据中间可以是空格、半角逗号
Sub dhfkd() k = 0 Dim arr(1 To 1100) As Variant Open ThisWorkbook.Path & "\num2.txt" For Input As #1 Do While Not EOF(1) 'EOF(1)用来判断#1是否读到头了,到头返回TRUE Input #1, x '读取一个数据 k = k + 1 arr(k) = x '将读取的数据存在一个数组中 Loop k = 0 For i = 1 To 10 For j = 1 To 110 k = k + 1 Cells(j, i) = arr(k) Next Next Close #1 End Sub
2.Line Input语句
格式:LineInput #文件号,字符型变量
功能:从打开的顺序文件中读出一个记录,即一行信息
用Line input来读取由Print写入的数据,Line Input读取一整行的数据~
Sub djhfdljf() Open ThisWorkbook.Path & "\mytxt.txt" For Output As #1 a = 123: b$ = "SBCD" Print #1, a, b$ Print #1, a; b$ Close #1 Open ThisWorkbook.Path & "\mytxt.txt" For Input As #1 Line Input #1, x$ Debug.Print x$ Line Input #1, x$ Debug.Print x$ Close #1 End Sub
3.Input函数
格式:Input(字符数,#文件号)
功能:从文件中读取指定字符数的字符
示例:A$=Input(20, #1)
顺序文件的缺点是不能快速地存取所需的数据,也不容易进行数据的插入、删除和修改等工作,因此对于经常要修改数据或取出文件中个别数据,均不适合使用,但对于数据变化不大,每次使用时又需要从头往后顺序地进行读写,它还是不失为一种好的文件结构
posted on 2011-11-03 22:36 McDelfino 阅读(1137) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)