excel表数据生成定长txt数据

项目作业中需要造数据,从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初学,不是很懂,希望改善

原文地址:https://www.cnblogs.com/zhangyuanbo/p/11214394.html