Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在xml文件中查找/替换多个字符串?_Xml_Excel_Notepad++_Replace - Fatal编程技术网

如何在xml文件中查找/替换多个字符串?

如何在xml文件中查找/替换多个字符串?,xml,excel,notepad++,replace,Xml,Excel,Notepad++,Replace,我需要在XML文件中替换大约600个不同的文本字符串(我使用的是notepad++,但如果这可以完成任务,我也可以使用其他程序)。文本更改列在单独的excel文件中。有没有一种方法可以让我运行一个脚本或命令,在一次快照中查找/替换所有字符串,而不必逐个执行 谢谢您可以使用一些简单的VBA在Excel s/s中完成这项工作。通过传入查找替换范围(例如从Excel VBA立即窗口)调用以下子项(使用VBA编辑器的Alt+F11访问,然后查看->立即): 假设A1:B600包含600个查找替换字符串

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


谢谢

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

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

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

Option Explicit'使用此选项!
Public Sub-ReplaceXML(rFindReplaceRange作为范围)在查找替换范围中传递
作为字符串的Dim sBuf
作为字符串的Dim sTemp
作为整数的Dim iFileNum
将sFileName设置为字符串
我想我会坚持多久
'根据需要编辑
sFileName=“C:\filepath\filename.xml”
iFileNum=FreeFile
打开sFileName作为iFileNum输入
直到EOF为止(iFileNum)
行输入#iFileNum,sBuf
sTemp=sTemp&sBuf&vbCrLf
环
近缘
“在替换项上循环
对于i=1的rFindReplaceRange.Rows.Count
如果rFindReplaceRange.Cells(i,1)“,则
sTemp=Replace(sTemp,rFindReplaceRange.Cells(i,1),rFindReplaceRange(i,2))
如果结束
接下来我
'保存文件
iFileNum=FreeFile
'首先更改sFileName以保存到其他文件,例如。
sFileName=“C:\newfilepath\newfilename.xml”
打开sFileName以作为iFileNum输出
打印#iFileNum,sTemp
近缘
端接头

谢谢您的帮助。我仍然有困难…因为我不是excel专家。我已将代码复制到VBA中。现在我尝试在我的范围ReplaceXML范围(“A1:B600”)上运行代码,但我不确定在哪里/如何执行此操作。请您解释一下。从vba窗口执行查看-立即。然后在那里键入ReplaceXML范围(“A1:B600”)并按enter键。我已经键入了您指示的内容,我得到了以下错误:编译错误:Sub或function未定义。你能提供什么额外的帮助吗?非常感谢你,让它成为一艘公共潜艇,而不是私人潜艇,它仍然不工作,我得到了同样的错误。我会继续努力,看看是否能找出我做错了什么。再次感谢你!
ReplaceXML Range("A1:B600")
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