QTP / UFT:使用VB比较两个excelsheets简单和高效

时间:2013-10-27 18:07:45

标签: excel vbscript qtp hp-uft

我想在VB中比较2个Excel表格。 我知道如何在QTP / UFT中打开这些表 我知道如何获得所有细胞的范围。 但我不知道比较这两张(范围)的高效方法。

如果第二张纸中的值与第一张纸中的相应值不同,则应将其插入第二张纸的相应单元格中。 我可以串行解析所有单元格以与相应的单元格进行比较,但这不是很有效。

我想以下列方式对它进行比较:

If not (sheet1.range() equals sheet2.range()) then
  if not (Sheet1.range.Row equals sheet2.range.row) then
    if not (Sheet1.range.Row.cells equals Sheet2.range.Row.cells) then
      Sheet2.range.Row.cells.value = Sheet1.range.Row.cells.value

所有值可以位于不同的行和单元格中,但在第一列和列的标题中有相应的ID。 所以我必须解析两个工作表中的正确行ID和两个列标题中的相应列。 我不想在表格中使用公式,因为我必须以程序化的方式进行比较。

如果我可以使用Excel中的函数,方法或属性,有人可以给我一个提示吗? 提前致谢

1 个答案:

答案 0 :(得分:2)

希望它可以帮助你。 它会比较,如果在第二张纸上的任何更改,它将更新单元格值并以黄色突出显示。

Set objMyExcel = CreateObject(“Excel.Application”)
objExcel.Visible = False

Set objMyDataExcel1= objMyExcel.Workbooks.Open(“C:\Data1.xls”)
Set objMyDataExcel2= objMyExcel.Workbooks.Open(“C:\Data2.xls”)

Set objMyWorksheet1= objMyDataExcel1.Worksheets(1)
Set objMyWorksheet2= objMyDataExcel2.Worksheets(1)

For Each cell In objMyWorksheet1.UsedRange

   If cell.Value <> objMyWorksheet2.Range(cell.Address).Value Then

       objMyWorksheet2.Range(cell.Address).Value = cell.Value
       cell.Interior.ColorIndex = 6

   Else

       cell.Interior.ColorIndex = 0

   End If

 Next

Set objMyExcel = Nothing

如果你想在执行时间看到excel,那么设置

objExcel.Visible = True