UIPath-遍历excel文件以“动态”填充具有读取范围的DataTable

时间:2019-01-30 07:51:23

标签: excel uipath

我的问题在原则上与Looping on URLs from Excel file using UiPath是相同的目标 (从具有ReadRange的Excel文件中进行迭代的意义上讲)

我想遍历excel文件-当然可以使用Excel Application Scope来完成。 但是,当我将Excel文件读入数据表时-我需要给它一个类似“ D2:K30”的范围。

“ K30”将是我读入的范围的结尾-那么我如何设法获得特定excel文件的“结尾”?

使用VBA,我只需要遍历excel文件并说

'如果行内容为“”'

,然后我会知道何时出现第一个EMPTY行。

也许我第一个发现的空行将保存在变量“ emptyRow”中-然后我可以说

读取范围“ D2:K” + emptyRow-1

因此,我的目标是在不将空行复制到数据表的意义上,使该读取范围“动态”。

此外,因为-当我将该数据表复制到另一个excel文件中时-我想用不同的颜色为特定范围着色,因此我需要每个范围的特定长度,否则我也会得到空行。

问候,弗朗兹

1 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点:

天真的方法

一种非常简单的方法是读取一个足够大的范围(例如A1:C10000),然后在该范围上循环以找到第一个空单元格,此时您将退出循环。有一个明显的缺点-这根本不是很有效。

调用VBA

另一种选择是使用Invoke VBA活动,然后使用类似以下的内容:

Function GetRowCount()
    Dim sh As Worksheet
    Set sh = ThisWorkbook.Sheets("Sheet1")
    Dim k As Long
    k = sh.Range("A1", sh.Range("A1").End(xlDown)).Rows.Count
    GetRowCount = k
End function

这应该可以正常工作,但是需要您使用Excel范围(这需要安装Excel)。

合并获取表并获取范围

这可能是我最喜欢的一个,因为您可以简单地使用Workbook活动(即,无需安装Excel)。但是,它要求您将数据存储在Excel represented as a table中。这是一个示例-Get Table Range活动返回一个范围(例如字符串,例如“ A1:C42”,然后在Read Range活动中使用。

getTableRange