使用VBscript在Excel中搜索和替换多个字符
我需要搜索并替换Excel工作表中字符串的特定部分 这是我的代码,我不知道如何在每个使用VBscript在Excel中搜索和替换多个字符,excel,vbscript,automated-tests,hp-uft,Excel,Vbscript,Automated Tests,Hp Uft,我需要搜索并替换Excel工作表中字符串的特定部分 这是我的代码,我不知道如何在每个单元格中准确搜索此部分。value my_new_string = "abc" For each objSheet1 in objworkbook2.sheets If objSheet1.Name = "Name1" Then LastRow = objsheet1.UsedRange.Rows.Count + objsheet1.UsedRange.Row - 1 Fo
单元格中准确搜索此部分。value
my_new_string = "abc"
For each objSheet1 in objworkbook2.sheets
If objSheet1.Name = "Name1" Then
LastRow = objsheet1.UsedRange.Rows.Count + objsheet1.UsedRange.Row - 1
For i = 1 To LastRow Step 1
For j = 1 To 15 Step 1
If objExcel1.Cells(i, j).value = "xyz" Then 'Here I have to check if the Cell value contains xyz and to replace it by **my_new_string**
End if
Next
Next
End If
Next
需要帮忙吗 我将您查找最后一行的方法更改为更可靠的方法 您还使用了两个不同的对象来描述同一张图纸,因此我修复了它!;) 最后,您只需使用
Replace
方法即可完成工作,而无需测试Instr
中是否存在该字符串(如果检测到旧的\u字符串,您还需要执行其他操作,请使用该方法)
谢谢大家,
这对我来说很好
For Each objsheet1 In objworkbook2.Sheets
With objsheet1
If .Name = "BatchRun" Then
On error resume next
For i = 1 To 15 Step 1
For j = 1 To 10 Step 1
If InStr(1, .Cells(i, j).Value, my_old_string) > 0 Then
.Cells(i, j).Value = Replace(.Cells(i, j).Value, my_old_string, my_new_string)
End If
Next
Next
End If
End with
Next
如果不希望单元格上有“精确”匹配,请使用
Instr(1,objExcel1.Cells(i,j).value,“xyz”)>0
作为检查条件。然后使用Replace(objExcel1.Cells(i,j).value,“xyz”,my_new_string)
。如果Instr(1,objExcel1.Cells(i,j).value,old_string)>0,然后Replace(objExcel1.Cells(i,j).value,old_string,new_string),这是我的条件和指令,但我得到了这个错误“由于语法错误,测试运行无法继续。调用子行(74)时不能使用括号:“替换(objExcel1.Cells(i,j).value,旧字符串,新字符串)”。“您的字符串替换必须替换某些内容…因此,objExcel1.Cells(i,j).value=replace(replace(objExcel1.Cells(i,j).value,“xyz”,my_new_string)
@Slai不要忘记您需要的内容。objworkbook2.Sheets(“Name1”)。使用drange.replace“xyz”,“my_new_string”,2
(或,1
替换整个)感谢@LankymartI收到此错误“由于语法错误,测试运行无法继续。应为“')”行(72):“LastRow=.Cells.Find(What:=”*”,“.”VBScript不支持参数:=value
语法。只需按的顺序传递值。Find(“*”,.Range(“A1”),…
等。另外下一个objsheet1
将在VBScript使用中中断下一个
。此外,任何命名常量都需要声明才能使用,请从此处进行查找-。如果遇到“类型不匹配”,您需要回答问题并向我们展示您编写的内容“您可能在错误的位置编写了代码,并且遗漏了一些内容。理想情况下,常量需要在全局范围内声明,因此,例如,如果此代码位于if
语句中,您可能会遇到错误。我发现,我们使用Const而不是Constant,UFT接受Const。
For Each objsheet1 In objworkbook2.Sheets
With objsheet1
If .Name = "BatchRun" Then
On error resume next
For i = 1 To 15 Step 1
For j = 1 To 10 Step 1
If InStr(1, .Cells(i, j).Value, my_old_string) > 0 Then
.Cells(i, j).Value = Replace(.Cells(i, j).Value, my_old_string, my_new_string)
End If
Next
Next
End If
End with
Next