美文网首页UiPath 中文教程
【UiPath 中文教程】在 UiPath 中运行 VBA(上)

【UiPath 中文教程】在 UiPath 中运行 VBA(上)

作者: Creator_蔚蓝 | 来源:发表于2018-12-23 16:04 被阅读336次

    1. 在 UiPath 中调用 Excel 的功能

    UiPath 中提供了两组 Activities 来实现 Excel 的数据操作。遗憾的是,这两组 Activities 包含的操作都是一些很简单,很基本的操作,只能调用非常有限的 Excel 功能,它们甚至不能对 Excel 常用的数据透视表等重要功能进行操作。关于**两组实现 Excel 数据操作 Activites 的更多细节,请点击 这里 阅读我之前发布的文章。

    UiPath 自带 操作 Excel 的 Activities

    然而,我们的业务逻辑往往没有像单纯读写 Excel 单元格那么简单,有可能复杂到 Excel 自带功能都无法覆盖的情况。在 Excel 里面,微软设计了 VBA 功能来应对这种情况,使你可以按照自己的意愿灵活调用、扩展 Excel 自带的功能。

    UiPath 操作 Excel 的时候,也有类似的需求。值得庆幸的是,UiPath Studio 似乎也意识到了这一点。它除了提供了对 Excel 基本操作的 Activites , 还预留了两个可以让你编写脚本来扩展 Excel 相关 Acticities 功能的 Activities:Execute macroInvoke VBA

    就像 Excel VBA 可以在Excel 执行一样,它们可以在 UiPath 的工作流中执行 Excel VBA 脚本。这是一个很了不起的功能,这意味着可以在 UiPath 工作流访问 Excel 的对象模型,获得 Excel 全部能力,完成对 Excel 各方面的控制。

    换句话说,如果你编写的 VBA 脚本足够好,你可以在 UiPath 里面调用 Excel 的所有功能,你再也不必被那几个自带的 Excel 相关 Activity 束缚住了手脚!


    2. Execute macro 和 Invoke VBA 应知应会

    Execute macro 和 Invoke VBA 这两个 Activity 之间其实是有一些不同的。它们的特性对比如下:

    • Invoke VBA 执行工作簿外部的 VBA 脚本。
      VBA 脚本是使用单独的 .bas 文件存储起来的,UiPath 做了以下的事情:
      1. 往目标工作簿插入 .bas 文件
      2. 将其命名与调用的文件一致
      3. 复制文件上的所有内容到 .bas 文件
      4. 执行指定的 Sub
      5. 移除 .bas 文件

    Invoke VBA 相当于临时性地插入了 .bas 文件,执行完成之后又把插入的 .bas 文件删除了。 .bas 文件最终不会被存储在工作簿里。这使得本来不能携带 VBA 代码的 .xlsx 类型的工作簿也可以执行 VBA 脚本了。而事实也证明,如果要在不能携带 VBA 代码的工作簿类型执行VBA 代码,只能使用这个 Activity 了。

    不同于 .xlsx 类型的工作簿, .xlsm 类型的工作簿可以存储 VBA 脚本,对是否可以携带 VBA 脚本这个特性不敏感。使用 Invoke VBA 这个活动也是可以的。在这种情况下带来的好处是:VBA 脚本代码和工作簿是分离的,更加方便对 VBA 脚本的版本管控。

    Invoke VBA
    Invoke VBA 例子
    1. 新建一个 Excel 工作簿,并将其命名为 UiPath Excel VBA(Invoke VBA).xlsx

    2. 打开工作簿,然后 F12 打开 VBE

    3. 在 VBE 中插入一个 VBA 模块,将其命名为 CodeOutsideWookBook

    4. 在模块中插入以下 VBA 脚本

    Public Sub MacroOutsideWookBook()
        MsgBox "Hello there, I am saying Hello outside the Wookbook!"
    End Sub
    
    1. 将模块导出为 CodeOutsideWookBook.bas 文件

    2. 将工作簿保存为 .xlsx类型的工作簿,然后关闭工作簿

    3. 在 UiPath Studio 中创建如下的流程。
      注意Excel application scope 中文件路径指向刚才的工作簿,而 Invoke VBA 中分别输入.bas 文件路径和刚才创建的宏名 MacroOutsideWookBook

    1. 在 UiPath 中点击 F5 按键运行流程图,得到如下结果:

    这意味着 UiPath 正确地执行了刚才创建的 VBA 脚本,得到了预期的效果。


    • Execute macro 执行工作簿内的 Macro。

    UiPath 执行存储在工作簿内的 VBA 脚本,就好像我们在 Excel 操作界面上运行宏一样。Execute macro 不会对工作簿内的 VBA 脚本做任何的更改,它要求工作簿内必须定义了相应的宏,适用于 .xlsm 类型的工作簿。

    Execute macro 例子
    1. 新建一个 Excel 工作簿,并将其命名为 UiPath Excel VBA(Execute Macro).xlsm

    2. 打开工作簿,然后 F12 打开 VBE

    3. 在 VBE 中插入一个 VBA 模块,将其命名为 CodeInsideWookBook

    4. 在模块中插入以下 VBA 脚本

      Option Explicit
      Public Sub MacroInsideWookBook()
          MsgBox "Hello there, I am saying Hello inside the Wookbook!"
      End Sub
    
    1. 将工作簿保存为 .xlsm 类型的工作簿,然后关闭工作簿

    2. 在 UiPath Studio 中创建如下的流程。
      注意Excel application scope 中文件路径指向刚才的工作簿,而 Execute Macro 中分别输入宏名 MacroInsideWookBook

    1. 在 UiPath 中点击 F5 按键运行流程图,得到如下结果:

    UiPath 执行了工作簿内的宏,并得到了预期的结果。


    3. 进阶

    上述的说明和例子只是阐述了 Execute macroInvoke VBA 的基本特性和初级用法。还没有涉及到如下非常实用的功能:

    • 将参数传递给 macro
    • 从 VBA 中返回数据
    • 调用 Excel 的高级功能如数据透视表
    • Execute macroInvoke VBA 中的错误调试和注意事项
    • 在 VBA 中调用 Excel 外部功能,如 File System Object

    更多实用的建议和技巧,后续会在恰当的时候更新……


    更多 UiPath 相关的资讯,请关注公众号:UiPath教程
    由于简书禁止直接在文章中插入公众号二维码,请点击 这里 了解添加该公众号的细节。

    相关文章

      网友评论

        本文标题:【UiPath 中文教程】在 UiPath 中运行 VBA(上)

        本文链接:https://www.haomeiwen.com/subject/mbztaftx.html