VBA excel多行字符串搜索

时间:2016-07-02 05:56:39

标签: string excel vba excel-vba multiline

我想使用VBA excel宏在文本文件中搜索多行字符串。 我尝试使用InStr函数。但它没有像我预期的那样工作。我的确切目标是读取存储在单元格中的多行字符串,并检查它是否在文本文件中可用。为此,我所做的是将文本文件读入变量,将单元格中保存的字符串读取到另一个变量,并使用Instr使用二进制比较进行比较。 InStr是否适用于多线串?如果没有任何其他方式来比较它?

这是我的代码

Public Function string_compare() As String
    Dim strFilename As String
    Dim strSearch As String
    strFilename = "D:\test.txt"
    Dim strFileContent As String
    Dim iFile As Integer: iFile = FreeFile
    Open strFilename For Input As #iFile
    strFileContent = Input(LOF(iFile), iFile)
    Close #iFile
    strSearch = Sheet1.Cells(9, 1).Value
    If InStr(1, strFileContent, strSearch, vbBinaryCompare) > 0 Then
        MsgBox "success"
    Else
        MsgBox "failed"
    End If
End Function

当我检查字符串时,两者似乎都是相同的。即使字符串相同,搜索结果也总是失败。任何建议都会有所帮助。

1 个答案:

答案 0 :(得分:0)

Tim和Mrig建议我从文本中删除cr和crlf,如下所示。现在它的工作正常。我可以用它来比较多行字符串。我在这里发布我的代码段。希望它也可以帮助其他人。

Public Function stringcompare(sourcefile As String, Workbookname As Worksheet) As String
Dim strSearch As String
Dim strFileContent As String
Dim iFile As Integer: iFile = FreeFile
Open sourcefile For Input As #iFile
strFileContent = Input(LOF(iFile), iFile)
Close #iFile
strSearch = Workbookname.Cells(1, 1).Value
strFileContent = Application.WorksheetFunction.Substitute(strFileContent, vbCrLf, "")
strSearch = Application.WorksheetFunction.Substitute(strSearch, vbLf, "")
    If StrComp(strFileContent, strSearch, vbBinaryCompare) = 0 Then
        MsgBox "success"
    Else
        MsgBox "failed"
    End If
End Function