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初学,不是很懂,希望改善
分类:
vba
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?