【UiPath 中文教程】06 - 在 UiPath 中运行 V
上节的《在 UiPath 中运行 VBA(上)》介绍了 Execute macro 和 Invoke VBA 的基本特性和初级用法。这一节接着上一节的内容继续讲述进阶的用法,主要探讨如何将参数传递到 VBA 代码中处理,并返回结果。
一、为什么要与 VBA 脚本交互数据?
1 使代码更加紧凑、灵活 ,易于维护
如果能将工作流中的数据传递到 VBA 代码并接收返回结果,就能利用 VBA 脚本来处理数据,并将结果返回到工作流中。
这种情况下,可以利用 VBA 进行数据清洗之类的工作。解决同样的数据处理问题,VBA 脚本相比于UiPath 自带的流程分支更加紧凑和清晰。
这也避免了使用 UiPath 自带的活动处理数据的时候,分支过多会使项目变得难以维护的问题。
VBA 语言是一门图灵完备的语言,它具有一门编程语言应有的所有特性。因此VBA 脚本相比于UiPath 自带的活动也更加灵活,这种灵活性在处理 Excel 数据时尤为突出。这是使用 VBA 处理数据的又一亮点。
2 灵活配置 Excel 的功能
你可以传递像工作簿路径之类的参数到 VBA 脚本中,然后使用 VBA 脚本来处理指定的工作簿。有了参数的传递,你可以控制的参数更加多了,对Excel 的操控更加灵活了。
3 更好地返回执行结果
可以返回数据意味着你可以直接在脚本中调用 Excel 内置的函数库,运行并返回结果。你不必再为 sumif, VLookup 之类的函数造轮子。你可以用的资源更多了。
你还可以在程序结束的时候返回执行的状态,然后在程序结束的时候接收来自 VBA 代码段的返回数据,用来在工作流中判断脚本程序运行的状态。这样能更好地在工作流中控制 VBA 脚本的执行,如是否正常退出、是否发生某些错误等等。
4 更多好处
你还可以发掘向 VBA 脚本传递参数和返回数据的更多好处。总之,相比于没有数据传递的情况,可以向 VBA 传入和传出数据之后,我们编写 UiPath 流程可用的资源更多了,生活更加容易了。
下面,我们用示例来说明使用 Execute macro 时传递参数的具体细节和技巧。Invoke VBA 的数据交互方法依此类推,不再赘述。
二、往 Macro 传入参数
1 创建一个名为 MacroBook.xlsm 的工作簿
2 打开工作簿,在 Excel 的开发工具选项卡或者 F12 快捷方式打开 VBE
3 插入一个名为 MacroModule 的 VBA 模块
4 在模块中插入如下的 VBA 代码段
5 保存并关闭 MacroBook.xlsm 工作簿,关闭 Excel。
至此, 你创建了一个工作簿,内部包含一段宏。只要你在调用宏的时候传递字符串参数,这个宏就会以消息框弹窗显示你所传递的字符串。
6 打开 UiPath Studio, 创建一个空白的工程,拖入 Excel application scope 活动和 Execute macro 活动。
7 在 Excel application scope的 Workbook Path 字段输入刚才创建的工作簿路径:"MacroBook.xlsm"。
8 在Execute macro 的 Macro Name 字段输入刚才创建的宏名 "MacroInBookInParamater"。
9 这时的流程图看起来应该是这样的:
10 (重点) 选中 Execute macro 活动,在 Macro Parameters字段输入 {"Parameter from UiPath to Excel."}。
"Parameter from UiPath to Excel. " 这个字符串就是我们这次向 MacroInBookInParamater 传递的参数。这个字符串将会显示在消息弹框中。
11 保存并运行工作流, 得到如下的弹框:
这说明了在 UiPath 工作流中传入的参数被 Excel Macro 准确地接收,Excel Macro 通过消息框将接收到的数据呈现出来。一切都按照如期进行,你已经学会了如何向 Macro 传递参数。
上述的例子仅仅是演示了传递一个字符串参数的情况,你还可以同时传递多个不同数据类型的参数到 Macro 中。后面的例子会说明这一点。
第10 步的关键在于正确地组织参数。在这里,数据的格式很重要,要点包括:
1 数据列表必须以花括号括起来;
2 字符串类型的数据必须以包含在英文双引号内部;
……
……
……
未完
此教程完整版发布在微信公众号 UiPath教程 上,请在公众号上阅读完整文章。你还可以在公众号上获得更多 UiPath 相关的资讯
由于简书禁止直接在文章中插入公众号二维码,请点击这里了解添加该公众号的细节。