小伙伴们大家好,今天跟大家分享点vba的专业知识-如何让窗体的输入框(文本框,列表框,选择按钮等)记录其历史输入信息以便下次启动的时候直接使用。
这个问题的来源是这样的,有小伙伴们反应一个问题,就是每次打开齿轮生成器都会将所有的参数重置,那么是否可以让这款小插件记录其历史的输入信息呢。答案是肯定的,思路也是比较简单。
我们可以在计算机某一个位置建立一个txt文本,或者excel或者word或者其他的数据库也可以,本次我们以txt为例,创建txt我们使用的是catia.FileSystem对象,在这个txt文本中记录一下我们所输入的参数信息(齿数,模数,齿宽等),可以在窗体退出的时候读入到txt文本,(当然这里的窗体退出可以是query close事件 或者是某一个命令按钮的click结束主程序事件来实现的),在启动窗体的时候,再从txt文本中读取之前写入的数据并且赋给文本框。
逻辑就是这么easy!如下是截取的一些代码和解释。
'我们可以把txt文本放到和catvbaproject(或者vb工程)同一个路径,也可以随意的在我的电脑中找一个位置存放即可,只要可读,可写就可以。
Private Sub UserForm1_Initialize()
'如下是获取vb工程路径的方法
vbpath = App.Path
'创建txt文本的fullname,txt文本名称是infosave.txt
oName = vbpath & "\" & "infosave.txt"
Set oFileSystem = catia.FileSystem
'如果txt文本不存在,就创建一个,一般在初次使用的时候才执行
If oFileSystem.FileExists(oName) = False Then
Set oFile = oFileSystem.CreateFile(oName, False)
'如果txt存在,那么从中读取相关数据
Else
Set oFile = oFileSystem.GetFile(oName)
Set otxt = oFile.OpenAsTextStream("ForReading")
Dim data(6)
row = 1
Do Until otxt.AtEndOfStream
data(row) = otxt.ReadLine
row = row + 1
Loop
otxt.Close
'将数组中的信息传递给输入框(以下包含了文本框和列表框)
UserForm1.TextBox1.Text = data(1)
UserForm1.TextBox2.Text = data(2)
UserForm1.TextBox3.Text = data(3)
UserForm1.TextBox4.Text = data(4)
UserForm1.ComboBox1.ListIndex = data(5)
UserForm1.ComboBox2.ListIndex = data(6)
End If
End Sub
‘窗体退出的时候,将窗体输入框的信息写入txt。
Private Sub UserForm1_QueryClose(Cancel As Integer, CloseMode As Integer)
Set dbFile = catia.FileSystem.GetFile(oName)
Set otxt = dbFile.OpenAsTextStream("ForWriting")
otxt.WriteUserForm1.TextBox1.Text & Chr(10)
otxt.WriteUserForm1.TextBox2.Text & Chr(10)
otxt.WriteUserForm1.TextBox3.Text & Chr(10)
otxt.Write UserForm1.TextBox4.Text& Chr(10)
otxt.Write UserForm1.ComboBox1.ListIndex &Chr(10)
otxt.WriteUserForm1.ComboBox2.ListIndex
otxt.Close
End Sub