You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UiPath通过VB.Net操作Excel解锁I、J列时报调用目标异常该如何解决

问题解决方法

核心原因

该报错是因为你操作的目标工作表已处于保护状态,Excel默认禁止在工作表保护生效时修改单元格的Locked格式属性,你之前调用全列解锁没有报错大概率是测试时工作表尚未启用保护。

可行解决方案

方案1:临时解除保护再修改(优先推荐)

在修改指定列的Locked属性前先解除工作表保护,修改完成后重新启用保护即可,代码调整如下:

' 前面的隐藏列、打印设置等代码保持不变
' 解锁列逻辑
excelWS.Unprotect("你的工作表保护密码") ' 无密码直接写excelWS.Unprotect()
excelWS.Range("I:J").Locked = False ' 无需加EntireColumn,Range("I:J")本身就是整列范围
excelWS.Protect("你的工作表保护密码") ' 无密码直接写excelWS.Protect()
' 后面的保存、关闭逻辑保持不变

方案2:拆分单列操作(兼容范围选择异常场景)

如果方案1仍报错,可以将多列范围拆分为两次单列操作,避免范围选中的兼容性问题:

excelWS.Unprotect()
excelWS.Range("I:I").Locked = False
excelWS.Range("J:J").Locked = False
excelWS.Protect()

额外优化点

  • 现有代码未释放Excel COM对象,操作完成后Excel进程会驻留后台占用文件,建议在excelApp.Quit()后增加资源清理逻辑:
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelWS)
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelWB)
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp)
excelWS = Nothing
excelWB = Nothing
excelApp = Nothing
GC.Collect()
GC.WaitForPendingFinalizers()
  • 可以增加工作表保护状态判断,避免无意义的解锁/上锁操作。

内容的提问来源于stack exchange,提问作者craig157

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 16:00:00