影刀中没有实现Excel中高级筛选功能的现成指令,想要通过影刀完成高级筛选,怎么办?

如何用指令实现如此丝滑的效果呢?主要是结合VBA来实现,总共分三步。
1、在VBA中输入以下代码:
Sub advancedFiltering(sheetName As String, dataSourceArea As String, criteriaArea As String, targetArea As String)
Dim ws As Worksheet
Dim numColumns As Integer
Dim startCol As String
Dim endCol As String
Dim lastRow As Long
Set ws = ThisWorkbook.Sheets(sheetName)
'删除名称管理器里面所有的名称,否则会名称冲突
Call DeleteAllNames
With ws
.Activate '激活指定的Sheet页
'先将目前的数据区域内容清空
numColumns = .Range(dataSourceArea).Columns.Count
startCol = Left(targetArea, 1)
endCol = Chr(Asc(startCol) + numColumns - 1)
lastRow = .Cells(.Rows.Count, startCol).End(xlUp).Row
.Range(targetArea & ":" & endCol & lastRow).ClearContents
'进行高级筛选
Application.CutCopyMode = False
.Range(dataSourceArea).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.Range(criteriaArea), CopyToRange:=.Range(targetArea), Unique:=False
End With
End Sub
Sub DeleteAllNames()
Dim nm As Name
'遍历名称管理器中的每个名称
For Each nm In ThisWorkbook.Names
'删除名称
nm.Delete
Next nm
End Sub2、在影刀的python模块写入以下代码:
# 使用提醒:
# 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能
# 2. package包提供访问当前应用数据的功能,如获取元素、访问全局变量、获取资源文件等功能
# 3. 当此模块作为流程独立运行时执行main函数
# 4. 可视化流程中可以通过"调用模块"的指令使用此模块
import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
import win32com.client
def main(workBookPath,sheetName, dataSourceArea,criteriaArea,targetArea):
# 创建Excel应用程序对象
excel = win32com.client.Dispatch("Excel.Application")
# 打开工作簿并选择工作表
workbook = excel.Workbooks.Open(workBookPath)
worksheet = workbook.Worksheets(sheetName)
# 调用VBA子程序并传递参数
worksheet.Application.Run("advancedFiltering", sheetName, dataSourceArea,criteriaArea,targetArea)
# 关闭工作簿和Excel应用程序
workbook.save
#workbook.Close()
#excel.Quit()3、在影刀流程中进行调用,完成。
