将变量从 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
我有一些 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