VBA 在文本文件中查找和替换文本

罗布韦尔斯456

我需要在excel的特定列中修改一个带有字符串的文本文件。当我执行代码时,我发现一些值是重复的。它似乎与以某种方式被解释为副本的旧值结束数字有关。然而,这并不是每次都会发生,我很难过。有 10,000 个条目需要更改,但我创建的小测试文件揭示了一个更大的问题。测试文件希望这个链接可以正常工作,如果可以,您会发现 Test.txt 我的测试文件,TestBook.xlsm 和 Test - L5K.txt,其中包含要修改的实际文件的一部分。

提前致谢。

Private Sub CommandButton21_Click()
Dim sBuffer As String, sSubstitute As String, sFileName 
As String, sNewTagRef As Variant
Dim sOldFileRef As Variant
Dim Lastrow As Long
Dim i As Integer, iFileNum As Integer

'Path to target file
sFileName = Application.GetSaveAsFilename()

iFileNum = FreeFile
Open sFileName For Input As iFileNum

' Find the last row of specified column
Lastrow = Worksheets("Sheet1").Cells(Rows.Count, 4).End(xlUp).Row

For i = 2 To Lastrow

        'sOldFileRef is the search value and sNewTagRef is replacement value
        Sheets("Sheet1").Activate
        sOldFileRef = ActiveSheet.Cells(i, 4).Value
        sNewTagRef = ActiveSheet.Cells(i, 5).Value

          'Prepare file text for replacement text
          Do While Not EOF(iFileNum)
              Line Input #iFileNum, sBuffer
              sSubstitute = sSubstitute & sBuffer & vbNewLine

          Loop

      Close iFileNum

     'Search and Replace text
     sSubstitute = Replace(sSubstitute, sOldFileRef, sNewTagRef)

     'Modify text file
     iFileNum = FreeFile
     Open sFileName For Output As iFileNum
     Print #iFileNum, sSubstitute

Next i

Close iFileNum

End Sub
蒂姆·威廉姆斯

编辑:在查看你的源文件后重新设计 - 我对那些做了一些错误的假设......

注意:您的某些搜索词是其他搜索词的子字符串,因此您需要按词长度降序对映射表进行排序,否则您最终将替换较长词的较短部分。

例如:

N21:370/08  Prep_Peel_Peeler1DisconnectSwitchAlarm
N21:370/02  Prep_Peel_Peeler2DisconnectSwitchAlarm
N21:370/0   Prep_Peel_HalvingUnitMotorDisconnectAlarm

如果您在其他两个之前替换 N21:370/0,则不会给您想要的结果。

 Private Sub CommandButton21_Click()

    Dim sBuffer As String, sFileName As String
    Dim sFileNameOut As String
    Dim rngLookup As Range, m
    Dim iFileNumIn As Integer, iFileNumOut As Integer
    Dim arrMap, i As Long, numReplacements As Long

    'sFileName = Application.GetSaveAsFilename() 'Path to target file
    sFileName = "C:\_Stuff\test\Test - L5K.txt"

    iFileNumIn = FreeFile
    Open sFileName For Input As iFileNumIn

    sFileNameOut = Replace(sFileName, ".txt", "_mod.txt")
    iFileNumOut = FreeFile
    Open sFileNameOut For Output As iFileNumOut

    With Sheets("Sheet1")
        Set rngLookup = .Range(.Range("D2"), .Cells(.Rows.Count, "E").End(xlUp))
        arrMap = rngLookup.Value
    End With

    'Perform replacements
    Do While Not EOF(iFileNumIn)
        Line Input #iFileNumIn, sBuffer
        If Len(sBuffer) > 0 Then
            For i = 1 To UBound(arrMap)
                If InStr(sBuffer, arrMap(i, 1)) > 0 Then
                    sBuffer = Replace(sBuffer, arrMap(i, 1), arrMap(i, 2))
                    If numReplacements <= 10 Then Debug.Print arrMap(i, 1), ">>", arrMap(i, 2)
                    numReplacements = numReplacements + 1
                End If
            Next i
        End If
        Print #iFileNumOut, sBuffer
    Loop

    Close iFileNumIn
    Close iFileNumOut

    Debug.Print "Made " & numReplacements & " replacements"

End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Excel VBA宏,使用输出文本文件查找和替换Word文档中的文本

来自分类Dev

Excel VBA 在 .txt 文件中查找/替换文本

来自分类Dev

如何在VBA中使用FileSystemObject替换文本文件行中的字符串?

来自分类Dev

在VBA中对齐文本文件

来自分类Dev

使用AppleScript查找和替换文本文件

来自分类Dev

在大文本文件(Delphi XE5)中查找和替换文本

来自分类Dev

使用VBA从文本文件中检索和调用VBA代码

来自分类Dev

使用 VBA 读取和处理文本文件的问题

来自分类Dev

查找文本并替换文本excel word vba

来自分类Dev

使用Java查找和替换文本文件中的单词

来自分类Dev

查找,解码和替换文本文件中的所有base64值

来自分类Dev

连接文本文件中的行-Excel VBA

来自分类Dev

从VBA中的文本文件中提取信息

来自分类Dev

附加到文本文件VBA

来自分类Dev

用vba附加文本文件

来自分类Dev

VBA将日期和时间放在输出文本文件中

来自分类Dev

使用VBS替换文本文件中的文本

来自分类Dev

查找并替换文本文件中的文本(包括空格!)

来自分类Dev

查找并替换文本文件Matlab

来自分类Dev

查找并替换文本文件Matlab

来自分类Dev

使用VBA在文件夹中的所有文档中查找和替换MS Word文本

来自分类Dev

如何在C中数组中的元素中查找和替换文本文件中的位置?

来自分类Dev

几个从文本文件中查找和替换

来自分类Dev

如何使用VBA在文本文件中用空格替换逗号

来自分类Dev

在文件中查找和替换文本

来自分类Dev

在Perl中查找并替换文本文件中的字符串

来自分类Dev

使用VBA将多个文本文件导入Excel中的1个单元格和新行?

来自分类Dev

使用Bash脚本查找/替换文本文件中的特殊字符

来自分类Dev

Java替换文本文件中的行

Related 相关文章

  1. 1

    Excel VBA宏,使用输出文本文件查找和替换Word文档中的文本

  2. 2

    Excel VBA 在 .txt 文件中查找/替换文本

  3. 3

    如何在VBA中使用FileSystemObject替换文本文件行中的字符串?

  4. 4

    在VBA中对齐文本文件

  5. 5

    使用AppleScript查找和替换文本文件

  6. 6

    在大文本文件(Delphi XE5)中查找和替换文本

  7. 7

    使用VBA从文本文件中检索和调用VBA代码

  8. 8

    使用 VBA 读取和处理文本文件的问题

  9. 9

    查找文本并替换文本excel word vba

  10. 10

    使用Java查找和替换文本文件中的单词

  11. 11

    查找,解码和替换文本文件中的所有base64值

  12. 12

    连接文本文件中的行-Excel VBA

  13. 13

    从VBA中的文本文件中提取信息

  14. 14

    附加到文本文件VBA

  15. 15

    用vba附加文本文件

  16. 16

    VBA将日期和时间放在输出文本文件中

  17. 17

    使用VBS替换文本文件中的文本

  18. 18

    查找并替换文本文件中的文本(包括空格!)

  19. 19

    查找并替换文本文件Matlab

  20. 20

    查找并替换文本文件Matlab

  21. 21

    使用VBA在文件夹中的所有文档中查找和替换MS Word文本

  22. 22

    如何在C中数组中的元素中查找和替换文本文件中的位置?

  23. 23

    几个从文本文件中查找和替换

  24. 24

    如何使用VBA在文本文件中用空格替换逗号

  25. 25

    在文件中查找和替换文本

  26. 26

    在Perl中查找并替换文本文件中的字符串

  27. 27

    使用VBA将多个文本文件导入Excel中的1个单元格和新行?

  28. 28

    使用Bash脚本查找/替换文本文件中的特殊字符

  29. 29

    Java替换文本文件中的行

热门标签

归档