用VBA从文本文件中检索行

用VBA从文本文件中检索行,vba,csv,Vba,Csv,我正在开发一个VBA应用程序,我想在其中打开一个CSV文件,获取某一行的内容,并将其存储在字符串中。我已经让它工作了,但这似乎是一个蛮力的方法,我觉得应该有一个更优雅的方式来做,而不是加载每一行,直到我想要的一个到我的字符串 Dim RowCount As Long Dim CurrentLine As Long Dim objFSO, objFile Const ForReading = 1 RowCount = 0 Set objFSO = CreateObject("Scripting.

我正在开发一个VBA应用程序,我想在其中打开一个CSV文件,获取某一行的内容,并将其存储在字符串中。我已经让它工作了,但这似乎是一个蛮力的方法,我觉得应该有一个更优雅的方式来做,而不是加载每一行,直到我想要的一个到我的字符串

Dim RowCount As Long
Dim CurrentLine As Long
Dim objFSO, objFile
Const ForReading = 1
RowCount = 0

Set objFSO = CreateObject("Scripting.FileSystemObject")
        Set objFile = objFSO.OpenTextFile(FileName, ForReading) 'Open specified file

    CurrentLine = 0                         'Start with line "0"
    Message = objFile.ReadLine              'Read contents of first line
    Do While CurrentLine < EventNumber      'If the current line being examined is not the specified line
        CurrentLine = CurrentLine + 1       'Increment the current line counter
        Message = objFile.ReadLine          'And copy the specified line to the Message string
    Loop                                    'And repeat
    objFile.Close                           'Close the file when done
Dim RowCount尽可能长
暗电流线路长度
Dim objFSO,objFSO文件
常数ForReading=1
行计数=0
设置objFSO=CreateObject(“Scripting.FileSystemObject”)
设置objFile=objFSO.OpenTextFile(文件名,ForReading)'打开指定的文件
CurrentLine=0'从第“0”行开始
Message=objFile.ReadLine'读取第一行的内容
如果正在检查的当前行不是指定行,则在CurrentLine
有人能提出更好的办法吗


另外-如果我要加载的条目太长,我会遇到麻烦吗?需要多长时间?在PLC编程世界中,标准字符串为82个字符,这是否也适用于VBA?

CSV文件是否有标题行?您可以使用
CreateObject(“ADODB.Connection”)
执行类似
的sql查询,其中EventNumber=something


检查此项:

不用担心字符串长度。我想可能是16384,但不确定。不幸的是,CSV文件是连续的,因此您需要读取,直到找到所需的行。如果它是一个非常大的文件,并且您大致知道该文件的位置,您可以尝试进行创作,并将其视为一个随机文件,但这有它自己的一组问题。是的,CSV有一个标题行。这是一个非常简单的应用程序——只有两列,“Tag”和“Message”。我的系统监视标记列中的标记,并记录激活标记时的相关消息。所以我想做的就是说“我正在看第7行的标记,所以请给我第7行的消息。”我对VBA非常陌生,所以有点难以理解您发布的链接中的代码-我将查找ADODB.Connection,看看我是否能理解它。