RPA项目会根据实际情况半自动或全自动的运行某些process,有时几分钟即可完成,有时需要跑一整天。
作为开发、用户、运维人员不可能盯着RPA运行或者每次都看活动日志(假设大家都很懒,其实实际情况比假设的更懒),RPA需要在运行完当次process后生成report(或者kibana)。复杂的会记录处理了哪些单据,成功率。简单的报告甚至是一封email,告知用户我跑完了,休息去了。
当前项目遇到用户需要看从数据库导出的当次运行情况表,表格是这样的
id | id2 | status |
100 | 1000 | done |
100 | 1001 | error |
100 | 1002 | done |
101 | 1003 | done |
102 | 1004 | done |
102 | 1005 | done |
用户想看到的是这样的
id | id2 | status |
100 | 1000 | done |
1001 | error | |
1002 | done | |
101 | 1003 | done |
102 | 1004 | done |
1005 | done |
Uipath是不能直接操作Excel界面的,有什么办法呢?
可以借助其他语言,macro,powershell...
这里我们选了macro,uipath怎么调用macro呢?invoke code!但invoke code不能像在alt+f11窗口里那样省略定义各种变量的语句。所以invoke code就pass了。
好在还有别的,我们发现了invoke VBA,把macro写在bas或txt里(更推荐bas)。Excel application scope标明作业Excel,里面加入invoke VBA,属性里填上路径和方法名,done!
Sub Macro1()
'
' Macro1 Macro
'
'
On Error Resume Next
Application.DisplayAlerts = False
For i = 2 To Range("A65535").End(xlUp).Row //只看A列
If Range("A" & i) <> Range("A" & (i - 1)) Then
If i <> 2 Then
Range("A" & rangeIndex & ":A" & (i - 1)).Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
End If
rangeIndex = i
End If
Next
Range("A" & rangeIndex & ":A" & Range("A65535").End(xlUp).Row).Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
Application.DisplayAlerts = True
ActiveWorkbook.RemovePersonalInformation = False //关闭Excel自动提示内容还是格式有变的弹框
End Sub
--------------------
Execute Macro
需要放在Excel Application Scope里,Macro代码写在Visual Basic for Application里面。
------------------------------
invoke VBScript