【问题标题】:UFT - Exporting datatable content to specific excel rowsUFT - 将数据表内容导出到特定的 excel 行
【发布时间】:2021-06-08 21:05:29
【问题描述】:

我需要一些帮助才能将数据导入到 excel 中的正确行

我在 excel 中有一个表格,其中前 3 行的前 5 列中包含内容,如下所示:

我需要将 UFT 数据表中的数据获取到 excel 的第 2、3 行但在 F、G 列中,但是当我按原样运行脚本时,数据被放入第 4 和第 5 行(如在图片中),而不是像我需要的那样的第二和第三

我有这个功能,但不知道如何修复它:

Public Function SetExcelCellData()
   Set objExcel = CreateObject("Excel.Application")
   objExcel.DisplayAlerts = False
   Set objWorkbook = objExcel.Workbooks.Open("C:\Users\WrightJ\Desktop\Excel\CompFormTest.xlsx")
   Set objSheet  = objWorkbook.Worksheets("Sheet1")
   Thank_you = Datatable("Thank you text",dtGlobalSheet)
   Prize = Datatable("Prize draw",dtGlobalSheet)
   rows = objSheet.UsedRange.Rows.count
   objSheet.Cells(rows+1,6).Value = Thank_you
   objSheet.Cells(rows+1,7).Value = Prize
   objWorkbook.SaveAs "C:\Users\WrightJ\Desktop\Excel\CompFormTest.xlsx"
   objWorkbook.Close
   Set objSheet  = Nothing
   Set objWorkbook = Nothing
   Set objExcel = Nothing
End Function

任何帮助都会很棒!!!

【问题讨论】:

    标签: excel vbscript hp-uft


    【解决方案1】:

    UsedRange 返回已用单元格的平方范围,因此在您的情况下返回 A1:G3

    所以当你调用这行rows = objSheet.UsedRange.Rows.count 时,变量rows 取3 作为值。

    要修复您的代码,请删除以上行并将以下行替换为:

    objSheet.Cells(2,6).Value = Thank_you
    objSheet.Cells(2,7).Value = Prize
    

    【讨论】:

    • 虽然请注意您的代码不灵活,如果您的组织结构发生变化,您将需要对其进行调整。
    • 感谢您的帮助。假设我在一个脚本中运行了 2 次迭代,所以我希望第 2 次迭代在下面的行上,而不是在第 1 行覆盖 Excel 中的第一次迭代数据。因此,它将第一次迭代的数据存储在顶行,并在它的正下方存储第二次迭代,以防每个之间的数据不同。我该怎么做?
    • 你知道数据Thank_youPrize是否总是分别在第6行和第7行?
    • 是的,它总是在那些行中。
    • 您可以使用iLastRowF = sht.Cells(sht.Rows.Count, "F").End(xlUp).RowiLastRowG = sht.Cells(sht.Rows.Count, "G").End(xlUp).Row 查找F 和G 列中最后使用的值(如果它们是2 个单独的值)。然后在为目标单元格提供坐标时使用iLastRowF```` and iLastRowG```,这将提供objSheet.Cells(iLastRowF,6).Value = Thank_you。这样,无论何时执行脚本,您都可以确保将新数据放在列的已用单元格下方。
    猜你喜欢
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    相关资源
    最近更新 更多