【问题标题】:How can I Find/Replace multiple strings in an xml file?如何在 xml 文件中查找/替换多个字符串?
【发布时间】:2013-03-05 14:34:38
【问题描述】:

我有大约 600 个不同的文本字符串需要在 XML 文件中替换(我使用的是 notepad++,但如果这样可以完成任务,我也可以使用其他程序)。文本更改列在单独的 Excel 文件中。有没有一种方法可以让我运行脚本或命令一次性查找/替换所有字符串,而无需单独执行每个字符串?

谢谢

【问题讨论】:

    标签: xml excel notepad++ replace


    【解决方案1】:

    您可以使用一些简单的 VBA 在 Excel s/s 中完成这项工作。通过传入查找替换范围来调用下面的 Sub,例如从 Excel VBA 即时窗口(使用 Alt+F11 访问 VBA 编辑器,然后查看 -> 即时):

    ReplaceXML Range("A1:B600")
    

    假设 A1:B600 包含 600 个查找替换字符串。

    模块 中定义以下内容后(在 VBA 编辑器中插入 -> 模块 (Alt+F11) ):

    Option Explicit ' Use this !
    
    Public Sub ReplaceXML(rFindReplaceRange as Range) ' Pass in the find-replace range
    
        Dim sBuf As String
        Dim sTemp As String
        Dim iFileNum As Integer
        Dim sFileName As String
        Dim i as Long
    
        ' Edit as needed
        sFileName = "C:\filepath\filename.xml"
    
        iFileNum = FreeFile
        Open sFileName For Input As iFileNum
    
        Do Until EOF(iFileNum)
            Line Input #iFileNum, sBuf
            sTemp = sTemp & sBuf & vbCrLf
        Loop
    
        Close iFileNum
    
        ' Loop over the replacements
        For i = 1 To rFindReplaceRange.Rows.Count
            If rFindReplaceRange.Cells(i, 1) <> "" Then
                sTemp = Replace(sTemp, rFindReplaceRange.Cells(i, 1), rFindReplaceRange(i, 2))
            End If
        Next i
    
        ' Save file
    
        iFileNum = FreeFile
    
        ' Alter sFileName first to save to a different file e.g.
        sFileName = "C:\newfilepath\newfilename.xml"
        Open sFileName For Output As iFileNum
    
        Print #iFileNum, sTemp
    
        Close iFileNum
    
    End Sub
    

    【讨论】:

    • 感谢您的帮助。我仍然有麻烦......因为我不是excel专家。我已将代码复制到 VBA 中。现在我正在尝试在我的范围 ReplaceXML Range("A1:B600") 上运行代码,但我不确定在哪里/如何执行此操作。你能解释一下吗?
    • 从 vba 窗口执行查看 - 立即。然后在那里输入 ReplaceXML Range("A1:B600") 并按回车键。
    • 我已经输入了您所指出的内容,但出现此错误:编译错误:未定义子或功能。您可以提供任何额外的帮助吗?非常感谢
    • Apols 使其成为公共子而非私有
    • 它仍然无法正常工作,我遇到了同样的错误。我会继续努力,看看我是否能弄清楚我做错了什么。再次感谢您!
    猜你喜欢
    • 1970-01-01
    • 2014-03-01
    • 2014-09-29
    • 2011-05-25
    • 2013-11-28
    • 2021-05-21
    • 1970-01-01
    • 2014-10-13
    • 1970-01-01
    相关资源
    最近更新 更多