项目作业中需要造数据,从txt文件中获取定长数据,直接从txt中修改,会显得十分麻烦,于是便利用excel自带的vba写了一个小工具。效果如下:
A1表示字段名,A2表示长度,A3是数据,也可以增加字段类型,自行拓展
点击“Create”按钮后,会在该excel文件目录下生成相应txt文件,txt文件的名字是自动获取此sheet页的名字
sheet名字
生成文件列表
文件内容
可自动生成多行数据
主要代码如下
1 Sub inputdata_Click() 2 Dim cols As Integer 3 Dim rows As Integer 4 Dim str As String 5 Dim num As Integer 6 Dim nullStr As String 7 Dim strFileName As String 8 9 cols = ActiveSheet.UsedRange.Columns.Count 10 rows = ActiveSheet.Range("A1048576").End(xlUp).Row 11 strFileName = ThisWorkbook.path & "" & ActiveSheet.Name & ".txt" 12 str = "" 13 nullStr = "" 14 15 If Dir(strFileName, 16) <> Empty Then 16 Kill strFileName 17 End If 18 19 For j = 3 To rows 20 For i = 1 To cols 21 num = ActiveSheet.Cells(2, i) 22 If num - Len(ActiveSheet.Cells(j, i)) < 0 Then 23 MsgBox "the char " & ActiveSheet.Cells(j, i) & "(row: " & j & ",col: " & i & ")" & "'s length is wrong !" 24 Exit Sub 25 End If 26 For k = 1 To num - Len(ActiveSheet.Cells(j, i)) 27 nullStr = nullStr & "0" 28 Next 29 str = str & nullStr & ActiveSheet.Cells(j, i) 30 nullStr = "" 31 Next 32 Set fs = CreateObject("Scripting.FileSystemObject") 33 Set f = fs.OpenTextFile(strFileName, 8, True) 34 f.writeline str 35 f.Close 36 str = "" 37 Next 38 39 MsgBox "input success" 40 End Sub
代码有缺陷,每循环一次就要创建一个读写实例,然后再关闭,影响效率,想把创建时提到循环前面,把close放到循环外面,试了一下,不晓得为什么会出问题。
本人vba初学,不是很懂,希望改善