WPS 里,通过Quicker运行简单vba正常,运行复杂一点的就报错。若把这段复杂vba粘贴到wps vba编辑器里运行又正常,请问有办法解决吗
报错内容:
异常来自 HRESULT:0x800A03EC StackTrace: 在 System.Dynamic.ComRuntimeHelpers.CheckThrowException(Int32 hresult, ExcepInfo& excepInfo, UInt32 argErr, String message)
在 CallSite.Target(Closure , CallSite , ComObject , String )
在 rhqtumo6Q8hFbw9ibm.UZkyEYqdyyKVUCV6JO.L5Fk4cJJt(Command )
在 LPAgent.Program.xFlnyFxF5(NamedPipeConnection`2 , String )
步骤(sys:officehelper)执行失败,原因:命令返回失败,错误:异常来自 HRESULT:0x800A03EC
停止动作:命令返回失败,错误:异常来自 HRESULT:0x800A03EC
▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰
代码内容(通过Quicker在wps运行报错,在wps里粘贴运行正常,在office里也运行正常):
Sub 统计选中区域单元格出现频次()
Dim selectedRng As Range
Dim cell As Range
Dim dict As Object
Dim wsResult As Worksheet
Application.ScreenUpdating = False
' 校验选中对象是否为单元格区域
If TypeName(Selection) <> "Range" Then
MsgBox "请先选中需要统计的单元格区域!", vbExclamation, "提示"
Application.ScreenUpdating = True
Exit Sub
End If
Set selectedRng = Selection
Set dict = CreateObject("Scripting.Dictionary") ' 后期绑定,无需手动引用库
' 遍历选中区域,累计频次
For Each cell In selectedRng
If cell.Value <> "" Then ' 跳过空单元格
dict(cell.Value) = dict(cell.Value) + 1
End If
Next
If dict.Count = 0 Then
MsgBox "选中区域内无有效数据!", vbInformation, "提示"
Application.ScreenUpdating = True
Exit Sub
End If
' 新建工作表存放结果
Set wsResult = Worksheets.Add(after:=Sheets(Sheets.Count))
wsResult.Name = "频次统计_" & Format(Now, "hhmmss") ' 带时间戳避免重名
' 写入表头与统计数据
wsResult.Range("A1:B1") = Array("单元格内容", "出现频次")
wsResult.Range("A2").Resize(dict.Count, 1) = Application.Transpose(dict.Keys)
wsResult.Range("B2").Resize(dict.Count, 1) = Application.Transpose(dict.Items)
' 按频次降序排序 + 自动适配列宽
wsResult.Range("A1").CurrentRegion.Sort _
Key1:=wsResult.Range("B1"), _
Order1:=xlDescending, _
Header:=xlYes
wsResult.Columns("A:B").AutoFit
Application.ScreenUpdating = True
MsgBox "统计完成,结果已生成至新工作表。", vbInformation, "完成"
End Sub
其他背景:公司电脑装了奇安信安全软件,限制其他软件的安装,用不了我是让it部解除了对wps vba 模块的限制才装上,不知道是不是这个软件在底层搞得鬼