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