从UFT中的Excel工作表循环值

时间:2014-10-16 08:54:05

标签: excel vba excel-vba qtp

请任何人帮助我!!!!

我有这个函数从外部excel工作簿调用数据并将值放入被测试的应用程序中,我需要它逐行遍历excel表中的所有值

下面是框架和我尝试使用的函数的链接,需要它来遍历excel表中的值。 PLS帮助。

非常感谢

http://www.automationrepository.com/2013/08/designing-hybrid-framework-in-qtp-part-3/

'================================================================================
'Function name - fnFetchDataFromExcelSheet
'Description - This function retrieves the data from the excel sheet based upon the column name
'================================================================================
Function fnFetchDataFromExcelSheet(strColumnName)

    Dim sColValue

    'Initialize the return the value to "empty" string
    fnFetchDataFromExcelSheet = "empty"

    'Add a new blank sheet into the QTP data table
    'Excel data will be copied into this blank sheet
    DataTable.AddSheet("dtDataSheet")

    'Import the data from the excel sheet into the QTP data table
    DataTable.ImportSheet sExcelWorkbookPath, sSheetName, "dtDataSheet"

    'Find the value from the data table
    sColValue = DataTable.Value(strColumnName, "dtDataSheet")

    'Return the value back to the calling function
    fnFetchDataFromExcelSheet = sColValue

    'Remove Reference
    DataTable.DeleteSheet("dtDataSheet")

End Function

1 个答案:

答案 0 :(得分:1)

您从网站发布的此功能在逻辑上是不正确的!

首先,你需要传递sSheetName和amp; strColumnName到函数。

即使我们忽略它是错误的错过或者假设sSheetName是一个全局变量(因此需要将其传递给函数),对于每次调用此函数,它都会将一个工作表导入数据表,得到给定单元格的第一行中的值,并再次删除它(!!!)。它会严重影响性能。你每次都会获得相同的价值!!

我会说,忽略这个功能。请按照以下步骤操作。

1)首先,您需要将excel导入数据表。

DataTable.ImportSheet /path/to/excel, /name/of/the/sheet, "dtDataSheet"

/ path / to / excel& / name / of / the / sheet应该在" "

2)获取行计数

intRowcount=DataTable.GetSheet("dtDataSheet").RowCount

3)使用简单的For循环

For iLoop = 1 To intRowcount

  DataTable.GetSheet("dtDataSheet").SetCurrentRow iLoop
  Msgbox DataTable.value("ColumnName","dtDataSheet")  'Replace the msgbox with what you want

Next