如何在VBS中将CSV每行第二个值存入指定数组?
解决方法
VBS中的数组默认是固定长度的,要动态添加元素需要用ReDim Preserve扩展数组长度,同时还要处理空行或格式错误的行避免下标越界。你可以按以下方式修改代码:
Public Function readeEachColumnDataExcel() Dim filename Dim fso Dim f Dim arrData Dim arrDataParameter() Dim fData Dim i ' 数组索引计数器 filename = "test.csv" Set fso = createobject("scripting.filesystemobject") Set f = fso.OpenTextFile("C:\Users\U5UI5TU\Documents\PDRM_Project\Excel\"& Filename) i = 0 ' 初始化计数器 While not f.AtEndOfStream fData = f.ReadLine ' 读取CSV文件的一行 arrData = split(fData,",") ' 按逗号分割行内容 ' 检查是否存在第二个元素,防止下标越界 If UBound(arrData) >= 1 Then ' 扩展数组长度,Preserve关键字保留已有数据 ReDim Preserve arrDataParameter(i) ' 存入第二个值,用Trim去除前后多余空格 arrDataParameter(i) = Trim(arrData(1)) i = i + 1 ' 计数器自增,准备下一个元素的存储 End If Wend f.Close Set fso=Nothing ' 可选:遍历数组验证结果 For Each item In arrDataParameter WScript.Echo item Next End Function Call readeEachColumnDataExcel
关键说明
ReDim Preserve arrDataParameter(i):每次循环动态扩展数组长度,Preserve确保之前存入的数据不会被清空Trim(arrData(1)):处理CSV中第二个值自带的前导空格,得到干净的内容If UBound(arrData) >= 1 Then:过滤空行或格式错误的行,避免出现"下标越界"的运行错误
内容的提问来源于stack exchange,提问作者Salman
相关产品推荐
相关产品推荐

