2009-07-07 12 views

Antwort

3

1 in QTP zwei Reihen von Datentabelle vergleichen) Haben Sie Datenzeilen in QTP nativen Datatable-Objekt vergleichen wollen?

  • Verwendung setCurrentRow Methode Beispiel: objDataSheet.SetCurrentRow (intRow)

  • Verwenden GetParameter Spaltennamen und Zellenwert zugreifen sColName = objDataSheet.GetParameter (j) .Name Wert von index: sCellValue = objDataSheet.GetParameter (j) .Name Wert von col Name: sCellValue = objDataSheet.GetParameter (sColName) .Name

2) Sie y Sie möchten 2 Zeilen in 2 verschiedenen Excel-Arbeitsblättern vergleichen? Sie können den folgenden Code verwenden (aus meinem Blog http://automationbeyond.wordpress.com, siehe auch andere Beispiele)

Excel-Anwendung muss auf dem PC installiert werden. Vergleich geht Zelle für Zelle innerhalb des besetzten Bereichs. Nicht übereinstimmende Zellen sind rot markiert.

Beide Arbeitsmappen müssen vorhanden sein und als vollständiger Pfad mit Datei definiert sein. Beide Arbeitsblätter müssen vorhanden sein und können als numerischer Index oder als Zeichenfolge definiert sein.

objParameter ist ein reservierter Parameter benutzerdefinierten Vergleich wie „ignorieren Fall“, zu implementieren „Zahlen aufrunden“ usw.

Public Function ExcelWorksheetCompare(ByVal sWorkbook1, ByVal sWorksheet1, ByVal sWorkbook2, ByVal sWorksheet2, ByVal objParameter) 
Dim boolRC, boolSheetExists 
Dim FSO, XLHandle 
Dim XLBook1, XLBook2, XLSheet1, XLSheet2 
Dim Iter, objCell 

‘Verify both files exist 
Set FSO = CreateObject(”Scripting.FileSystemObject”) 
boolRC = FSO.FileExists(sWorkbook1) 
If Not boolRC Then 
ExcelWorksheetCompare = FALSE 
Exit Function 
End If 
boolRC = FSO.FileExists(sWorkbook2) 
If Not boolRC Then 
ExcelWorksheetCompare = FALSE 
Exit Function 
End If 
Set FSO = Nothing 

Set XLHandle = CreateObject(”Excel.Application”) 
XLHandle.DisplayAlerts = False 

‘Open workbook1 
Set XLBook1 = XLHandle.WorkBooks.Open(sWorkbook1) 

‘Verify sheet exists (1) 
If isNumeric(sWorksheet1) Then 
sWorksheet1 = CInt(sWorksheet1) 
If (sWorksheet1 >0) AND (sWorksheet1<=XLBook1.Worksheets.Count) Then 
Set XLSheet1 = XLBook1.Worksheets(sWorksheet1) 
boolSheetExists = TRUE 
Else 
boolSheetExists = FALSE 
End If 
Else 
boolSheetExists = FALSE 
For Iter = 1To XLBook1.Worksheets.Count 
If XLBook1.Worksheets(Iter).Name = sWorksheet1 Then 
Set XLSheet1 = XLBook1.Worksheets(Iter) 
boolSheetExists = TRUE 
End If 
Next 
End If 

If Not boolSheetExists Then 
XLBook1.Close 
XLHandle.Quit 
Set XLBook1 = Nothing 
Set XLHandle = Nothing 

ExcelWorksheetCompare = FALSE 
Exit Function 
End If 

‘Open workbook2 
Set XLBook2 = XLHandle.WorkBooks.Open(sWorkbook2) 

‘Verify sheet exists (2) 
If isNumeric(sWorksheet2) Then 
sWorksheet2 = CInt(sWorksheet2) 
If (sWorksheet2 >0) AND (sWorksheet2<=XLBook2.Worksheets.Count) Then 
Set XLSheet2 = XLBook2.Worksheets(sWorksheet2) 
boolSheetExists = TRUE 
Else 
boolSheetExists = FALSE 
End If 
Else 
boolSheetExists = FALSE 
For Iter = 1To XLBook2.Worksheets.Count 
If XLBook2.Worksheets(Iter).Name = sWorksheet2 Then 
Set XLSheet2 = XLBook2.Worksheets(Iter) 
boolSheetExists = TRUE 
End If 
Next 
End If 

If Not boolSheetExists Then 
XLBook1.Close 
XLBook2.Close 
XLHandle.Quit 
Set XLSheet1 = Nothing 
Set XLBook1 = Nothing 
Set XLBook2 = Nothing 
Set XLHandle = Nothing 

ExcelWorksheetCompare = FALSE 
Exit Function 
End If 

‘Mark range 

‘Compare and mark mismatches red 
For Each objCell In XLSheet2.UsedRange 
If objCell.Value <> XLSheet1.Range(objCell.Address).Value Then 
objCell.Interior.ColorIndex = 3 
Else 
objCell.Interior.ColorIndex = 0 
End If 
Next 

‘Save and close 

XLBook1.Close 

XLBook2.Save 
XLBook2.Close 

XLHandle.Quit 

Set XLSheet1 = Nothing 
Set XLSheet2 = Nothing 
Set XLBook1 = Nothing 
Set XLBook2 = Nothing 
Set XLHandle = Nothing 

ExcelWorksheetCompare = TRUE 

End Function 
Verwandte Themen