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
使用VBscript在Excel中搜索和替换多个字符_Excel_Vbscript_Automated Tests_Hp Uft - Fatal编程技术网

使用VBscript在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

我需要搜索并替换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
        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