使用 UFT 中的 VBscripting 读取 Excel 行中的值并将其存储到变量/数组

问题描述 投票:0回答:2

通过 UFT,我尝试从 Excel 工作表中读取行(可以是基于用户输入的任意数量的行)。我想将这些值(是字符串值)传递给另一个函数。

下面的代码在“fieldvalueChar(j-1) = ws.cells(j,1)”行给出下标超出范围错误

Dim value 
Dim lRow
Dim fieldvalue
Dim fieldvalueChar()
'Open the spreadsheet document for read-only access.
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("Path\Input.xlsx")

Set ws = objWorkbook.Sheets("Sheet1")
rowcount = ws.usedrange.rows.count

for j = 1 to rowcount
    fieldvalueChar(j-1) = ws.cells(j,1)

next

MsgBox(fieldvalueChar(0))
MsgBox(fieldvalueChar(1))

Excel 工作表始终只有一列,并根据用户输入动态更改行数。我在网上看到了一些VBA代码,但没有VBS。

excel vbscript qtp hp-uft
2个回答
4
投票

这是因为你没有初始化数组。你可以尝试这样的事情

Dim value 
Dim lRow
Dim fieldvalue
ReDim fieldvalueChar(1) ' Just Declare an array of 1, Since array size has to be constant when declaring 

'Open the spreadsheet document for read-only access.
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("C:\Users\saravananp\Desktop\Items.xls")

Set ws = objWorkbook.Sheets("Items")
rowcount = ws.usedrange.rows.count

' Redefine array size dynamically based on number of Rows 
ReDim fieldvalueChar(rowcount)

for j = 1 to rowcount
    fieldvalueChar(j-1) = ws.cells(j,1) 
next


MsgBox(fieldvalueChar(0))
MsgBox(fieldvalueChar(1))

另一方面,您也可以尝试数据表。


0
投票

嗨@Prageeth Saravanan,

我需要以参数值格式从 Excel 中的两列中提取单元格数据。 例如:B 列有参数 - 国家/地区列表,W 列有适当的值。 另外,很少有行被合并,很少没有。

您能否通过使用带有合并单元格的随机数据的 Excel 来帮助我编写此代码。

© www.soinside.com 2019 - 2024. All rights reserved.