如何将一个函数中检索到的数据用作另一个函数的输入参数?

时间:2014-07-08 09:45:33

标签: vbscript

Public Function ReadData_Excel(strPathFile,strSheetName)
  Set objExcel=CreateObject("Excel.Aplication")
  Set objWorkbook=objExcel.Workbooks.Open(strPathFile)
  Set objWrkSheet=objWorkbook.GetSheet(strSheetName)

  For iRow = 1 to objWrkSheet.UsedRange.Rows.Count
    'Retrieve Parameter values from "iRow" rows and columns A & B
    ParameterValue 1= objWrkSheet.Rows(iRow).Columns(iUserNameCol).Value
    ParameterValue 2= objWrkSheet.Rows(iRow).Columns(iPasswordCol).Value
    ...
    ParameterValue n
  Next

  xlBook.Close
  xlApp.Quit
  Set objWrkSheet = Nothing
  Set objWorkbook = Nothing
  Set objExcel= Nothing 
End Function

Public Function Insert_UserdataFromExceltoGUIFields(ParameterValue 1,ParameterValue 2, ...,ParameterValue n)
  'Parameterization Block:
  With Browser("title:=Welcome: XXX", "index:=0")
    'Step 2
    .WebEdit("YID:=YYY").Set ParameterValue 1   'Parameter 1: YYY
    .WebEdit("ZID:=ZZZ").Set ParameterValue 2   'Parameter 2: ZZZ
    ...
    .WebEdit("AID:=AAA").Set ParameterValue n   'Parameter n: ContactNumber
    .Image("name:=INSERT").Click
  End With
End Function

我的方案是我想使用我用函数ReadData_Excel()检索的数据作为函数Insert_UserdataFromExceltoGUIFields()的输入数据/参数。

2 个答案:

答案 0 :(得分:0)

function abc()
  abc = 1
end function

dim a : a = abc

通过将返回值设置为具有函数名称的变量来指定返回值。

答案 1 :(得分:0)

你可以在函数Insert_UserdataFromExceltoGUIFields()中调用ReadData_Excel()(这实际上是一个过程而不是一个函数,因为它不会返回任何东西)。

Public Function ReadData_Excel(strPathFile,strSheetName)
  ...
  Set objWorkbook = Nothing
  Set objExcel= Nothing

  Insert_UserdataFromExceltoGUIFields ParameterValue 1, ParameterValue 2, ...
End Function

否则,您必须更改ReadData_Excel(),以便它实际返回您阅读的数据。为此,您应首先定义适当的数据结构。例如,您可以将数据读入字典并返回:

Public Function ReadData_Excel(strPathFile,strSheetName)
  ...

  Set data = CreateObject("Scripting.Dictionary")
  For iRow = 1 to objWrkSheet.UsedRange.Rows.Count
    'Retrieve Parameter values from "iRow" rows and columns A & B
    data("XXX") = objWrkSheet.Rows(iRow).Columns(iUserNameCol).Value
    data("ZZZ") = objWrkSheet.Rows(iRow).Columns(iPasswordCol).Value
    ...
    data("ContactNumber") = ...
  Next

  ...

  Set ReadData_Excel = data
End Function

Set xlData = ReadData_Excel("C:\path\to\your.xlsx", "somesheet")

这也会简化Insert_UserdataFromExceltoGUIFields()的界面,因为你只传递一个对象而不是一堆不同的参数(当然你应该用更加不言自明的方式替换data名):

Public Function Insert_UserdataFromExceltoGUIFields(data)
  'Parameterization Block:
  With Browser("title:=Welcome: XXX", "index:=0")
    'Step 2
    .WebEdit("YID:=YYY").Set data("XXX")
    .WebEdit("ZID:=ZZZ").Set data("ZZZ")
    ...
    .WebEdit("AID:=AAA").Set data("ContactNumber")
    .Image("name:=INSERT").Click
  End With
End Function

让步于使用全局变量来从文件中读取数据的诱惑。这完全违背了在函数中封装代码的目的。