【UiPath 中文教程】07 - 在 UiPath 中运行 V
UiPath 自带的Excel 操作包虽然丰富,但是在实际应用中却还是会让你感觉到力不从心。这是由于我们的业务场景千变万化,有太多的场景 UiPath 的操作包也捉襟见肘。
因此,在处理Excel工作簿数据或者操作 Excel 的时候,拥有对 Excel 的全部控制权将会是非常大的优势。然而,在 UiPath 中运行 VBA 代码,可以在工作流中使用 Excel 的所有功能,作为 UiPath 功能的扩展和补充。
本节的教程将和你一起探索 UiPath 调用 Excel 功能的一些实用技巧。
注:这一节的内容是建立在《在 UiPath 中运行 VBA(上)》和《在 UiPath 中运行 VBA(中)》
这两节教程的基础上。在这里,我将不再详细描述构建 UiPath 自动化程序和 Excel Macro 的调用的所有细节。
这些内容已经在前面的教程中描述得很清楚了,对UiPath 运行 Excel VBA的内容没有了解的朋友请先阅读前面的教程,再回来看这篇文章。
下面,我们来从例程中探索 UiPath 结合 VBA 操作的一些技巧:
一、 UiPath 调用 Excel 的内置函数
我们先来个简单点的,直接运用内置函数进行数据处理。
首先,在工作簿 BookWithMacro.xlsm 中输入如下所示的 Macro:
然后,在 UiPath 中构建一个如下所示的自动化程序:
Execute macro 的属性设置是这样的:
注意到,Macro Name 填写的是刚才构建的 InvokeFunction ,而 Macro Parameters 则输入两个数字 {10,3} 作为 macro 的参数列表,Macro Output 将结果返回到命名为 OutputObject 的 Object 对象中。
这个自动化程序运行的时候,Macro 接收来自工作流的输入参数,然后调用 Excel 的内置函数 Max 对输入参数进行比较大小,然后将结果返回到工作流中,最后工作流将结果打印到日志中。
执行自动化程序后,Output 面板输出了输入参数的最大值。
这个例程正确运行,说明了我们能通过 Macro调用 Excel 内置的工作表函数。这是一个很了不起的特性,众所周知,Excel 内置了大量的工作表函数。有了这个技巧,我们就可以将 Excel 大量的工作表函数为我所用。下面展示一下 WorksheetFunction 可以直接使用的函数列表:
你看,在VBE 我们可以使用的函数是如此之多!与 UiPath 的众多 Activities 结合将会使我们的编码更加容易!
接下来,让我们通过函数来操作Excel 对象模型,处理工作簿内部的数据。我编写了一个可以根据表名和列名来计算非空行数的宏:
然后在 UiPath 工作流中输入表名和列名两个参数,接收宏的返回。程序运行的时候,我得到了对应列的非空单元格数,我将其用 Log Message 打印出来的结果如下:
这说明了可以在宏里调用 Excel 内置函数,处理工作簿内的数据!到目前为止,我们已经知道了通过宏 可以处理来自 UiPath 工作流的数据 和 访问工作簿内的对象模型 并 运用内置函数处理数据。
然而,这一切并没有结束,UiPath 与 Excel VBA 结合的实用技巧远不止这些!
更实用的技巧,让UiPath 通过 Execute macro 来运行 VBA 封装的 Excel 内置函数。我封装了常用的 Vlookup 函数,可以在 UiPath 中输入数据然后到指定的表中进行数据匹配,最后返回结果。宏的参数列表是这样的:
Macro 的属性设置是这样的:
查找的表格如下:
结果如下:
就像我们在工作表中使用 Vlookup 函数一样,我们可以在工作流中输入数据然后在指定的工作表中匹配数据了。
上面的例子中,我们使用供应商 ID <130023085> 到<物料记录表>中查找来料数量(第 4列),工作流能接收到正确的结果。
值得注意的是,这里的 Macro 参数列表除了需要增加一个工作表名(SheetName)以外,其它参数与在Excel 工作表中使用 Vlookup 函数的参数输入保持一致。你可以很轻易地将 Excel 工作表函数的技能迁移到 UiPath 工作流编写中,这看起来很棒。
不知道你留意到了没有,每次使用 Vlookup 函数都需要输入目标列在表格中的列号(Vlookup 的第 3 个参数)。这样的使用体验并不是很友好,因为直接输入列名更加简单直接,输入列号的话还需要根据列名推算列号。
幸好,在 VBA Macro 里,你完全可以按照你的意愿去封装 Excel 内置函数。我编写了 VLookup 的另一个版本命名为 SuperVLookup,它的参数列表看起来是这样的:
调用的时候直接输入列名而不是列号,本例中是 “来料数量”,Execute Macro 完整的属性列表如下:
运行之后能得到正确结果:
哈哈,你终于不必每次使用 Vlookup 的时候傻乎乎地数列号了,直接填入列名也能得到正确的结果。
2 UiPath 调用 Excel 的高级功能
在前面的教程中,我曾说过,使用 VBA Macro 可以控制 Excel 的所有方面。接下来我们看看使用 Excel Macro 来调用 Excel 自带功能的情况。下面的历程演示了UiPath 通过 Macro 调用Excel 排序功能。
……
……
……
未完
此教程完整版发布在微信公众号 UiPath教程 上,请在公众号上阅读完整文章。你还可以在公众号上获得更多 UiPath 相关的资讯
由于简书禁止直接在文章中插入公众号二维码,请点击 这里 了解添加该公众号的细节。