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初学,不是很懂,希望改善

 

posted @   勤俭的搬运工  阅读(756)  评论(1编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示