问题描述:
在ZWCAD中运行AutoLISP代码操作Excel数据后,Excel进程(EXCEL.EXE
或WPS的ET.EXE
)会在后台残留,导致:
- 无法再次通过代码连接Excel(提示对象已存在)。
- 手动打开Excel时速度极慢(需等待后台进程彻底关闭)。
- 对比现象:同样的代码在 AutoCAD 环境下运行,即便有后台残留,也不影响后续使用
- 代码关键逻辑(已尝试的优化措施):
;; 1. 强制退出Excel
(vl-catch-all-apply ‘vlax-invoke-method (list xlsapp “Quit”));; 2. 释放所有对象(工作表、工作簿、应用)
(if xlsht (vlax-release-object xlsht))
(if xlsapp (vlax-release-object xlsapp));; 3. 系统级终止进程(备用方案)
(vlax-invoke (vlax-create-object “WScript.Shell”) “Run” “taskkill /f /im excel.exe”) -
已尝试的解决方案:
- 显式调用
Quit
方法并释放对象。 - 使用
unwind-protect
确保资源释放。 - 以管理员身份运行ZWCAD。
- 更换Excel版本(测试Microsoft Excel和WPS)。
环境信息:
- ZWCAD版本:2025(请填写实际版本)
- 操作系统:Windows 11
- Excel/WPS版本:Microsoft Office 2024 / WPS
- CAD权限:已尝试管理员和非管理员模式。
求助内容:
- ZWCAD在处理COM对象释放时,是否有特殊配置或限制?
- 是否存在已知的进程残留问题(如特定版本缺陷)?
- 是否需要修改代码逻辑以适配ZWCAD的COM接口?
- 显式调用