将变量从 QTP/UFT 传递到 Excel 宏

Passing variables from QTP/UFT to Excel macros

我有一些 txt 文件要导入到 Excel。这些文件按日期分组。我在 Excel 中记录了宏,每次我必须将每个日期的文件路径更改为 ...\files(date)\filename.txt。这是宏:

Sub DataImport2()
'
' DataImport2 Macro
'
With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;d:\testfiles\project1170528\filename.txt" _
        , Destination:=Range("$A"))
'        .CommandType = 0
        .Name = "filename.txt"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 437
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileOtherDelimiter = "|"
        .TextFileColumnDataTypes = Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _
        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub

在自动化测试中,UFT 应在网页中选择一个日期,并将网页上的数据与该日期的文件中的数据进行比较。

问题是:如何将选择的日期从 UFT 传递到 Excel 并在 Excel 中将其用作文件路径?我想它应该看起来像

..."TEXT;d:\testfiles\project1\(uft-passed-date)\filename.txt" _...

也许如下传递变量可能有效,但从 Excel/macro 方面我应该如何使用它们?

objExcel.Run "macroname", "params1", "param2"

我试图将上面的宏复制到 UFT,但没有成功(一般错误)。 在 UFT 12.52、IE11 和 Office 16 上工作。

您需要将宏更改为此,以便它可以接受 picked date

Sub DataImport2(sFilePart As String)
    With ActiveSheet.QueryTables.Add(Connection:= _
            "TEXT;d:\testfiles\project1\" & sFilePart & "\filename.txt" _
            , Destination:=Range("$A"))
    '
    '~~> Rest of the code
    '
End Sub

首先像这样修改您的宏以添加日期参数:

Sub DataImport2(dDate as String)
'
' DataImport2 Macro
'
With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;d:\testfiles\project1\" & dDate & "\filename.txt" _
        , Destination:=Range("$A"))

然后在 UFT 中,从 GUI 捕获日期并将其转换为您的文件名格式(如果需要)。

最后 运行 您来自 UFT 的宏如下所示:

Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("ExcelFilePath\FileName.xlsm", 0, True)
objExcel.Visible = False
objExcel.DisplayAlerts = False
objExcel.Run "DataImport2", sDate 'sDate variable holding date
objExcel.Application.Quit
Set objWorkbook = Nothing : Set objExcel = Nothing