注册 登录
编程论坛 VB6论坛

如何读取CSV最后一行指定单元格内容

alickluo 发布于 2023-03-15 23:02, 1038 次点击
各位老师:

如何读取CSV最后一行指定单元格内容:

A.CSV是通过","分割而成的文件,里面有多行多列,如何读取最后一行第8列的内容,另外这列内容有公式,如何只读取数据(公式的结果)

谢谢大家!!
8 回复
#2
mrexcel2023-03-17 14:37
Split()分割两次,Evaluate()转换成数值
#3
alickluo2023-03-18 17:28
回复 2楼 mrexcel
小白一个,能提供完整代码吗?
#4
mrexcel2023-03-19 16:34
以下是引用alickluo在2023-3-18 17:28:52的发言:

小白一个,能提供完整代码吗?

你至少提供一个测试文件吧?
#5
alickluo2023-03-23 09:38
回复 4楼 mrexcel
谢谢老师,请查阅附件,现在想读取最后一行的第9个字段。
只有本站会员才能查看附件,请 登录
#6
alickluo2023-03-23 09:43
另外,压缩上传后,CSV的公式被转为了数值格式,但实际环境该单元格是公式,需要提取公式得出的值。
#7
mrexcel2023-03-27 16:33
程序代码:
Dim s() As String, F8 As String
Open "c:\A_工单用料明细.csv" For Input As #1
s = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbCrLf)
Close #1
F8 = Split(s(UBound(s) - 1), ",")(8)
MsgBox F8
#8
alickluo2023-04-01 11:34
为何显示“下标越界”?
#9
yuma2023-04-03 19:07
可以使用VB的FileSystemObject对象来读取CSV文件,并使用Split函数将每一行分割成数组。然后可以通过数组的长度来获取最后一行,并使用Split函数将最后一行分割成单元格。最后可以使用Excel的Application对象来计算公式并获取结果。
以下是一份示例代码:
Sub ReadLastCellInCSV()
    Dim filePath As String
    filePath = "C:\test.csv" 'CSV文件路径
   
    ' 创建FileSystemObject对象
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
   
    ' 打开CSV文件
    Dim file As Object
    Set file = fso.OpenTextFile(filePath, 1)
   
    ' 读取CSV文件内容
    Dim content As String
    content = file.ReadAll
   
    ' 关闭CSV文件
    file.Close
   
    ' 将CSV文件内容分割成行数组
    Dim lines() As String
    lines = Split(content, vbCrLf)
   
    ' 获取最后一行
    Dim lastLine As String
    lastLine = lines(UBound(lines))
   
    ' 将最后一行分割成单元格数组
    Dim cells() As String
    cells = Split(lastLine, ",")
   
    ' 获取第8列的内容
    Dim cellValue As String
    cellValue = cells(7) '数组下标从0开始,第8列的下标为7
   
    ' 创建Excel的Application对象
    Dim excelApp As Object
    Set excelApp = CreateObject("Excel.Application")
   
    ' 计算公式并获取结果
    Dim result As Variant
    result = excelApp.Evaluate(cellValue)
   
    ' 关闭Excel的Application对象
    excelApp.Quit
   
    ' 显示结果
    MsgBox "最后一行第8列的内容为:" & result
End Sub

需要注意的是,使用Excel的Application对象计算公式需要先启动Excel程序,因此需要等待一段时间。如果CSV文件中的公式比较复杂,计算时间可能会比较长。
1