关于执行VBA脚本在动作中失效的问题

BUG反馈 · 1884 次浏览
韩瘫 创建于 2023-03-01 14:11

Office版本:Office 365MSO 版本2302 Build16.0.16130.20122 64位

系统版本:Windows 11 专业版 22H2

前提:1.已按照教程开启office中的“信任对VBA工程对象模型的访问”;

           2.Excel是用quicker打开的(Excel对象操作(Excel文件读写也尝试过)-打开工作簿)

           3.未修改用户账户控制(UAC)

           4.若将该步骤单独为一个动作,什么都不修改,在前台Excel中运行无报错且正常使用

动作步骤:Excel对象操作:打开工作薄(可正常打开)——office软件辅助:执行VBA脚本(Excel),报HRESULT:0x800401E3错误

错误详情:

准备命令出错:操作无法使用 (异常来自 HRESULT:0x800401E3 (MK_E_UNAVAILABLE)) StackTrace: 在 System.Runtime.InteropServices.Marshal.GetActiveObject(Guid& rclsid, IntPtr reserved, Object& ppunk) 在 System.Runtime.InteropServices.Marshal.GetActiveObject(String progID) 在 SCQGYwwWG9rFqxIC1L.e7aQod9vp1TI7VPPNP.QrSnuMNXZq(Command ) 在 LPAgent.Program.VNvv7aQod(NamedPipeConnection`2 , String )
步骤(sys:officehelper)执行失败,原因:命令返回失败,错误:准备命令出错:操作无法使用 (异常来自 HRESULT:0x800401E3 (MK_E_UNAVAILABLE))
停止动作:命令返回失败,错误:准备命令出错:操作无法使用 (异常来自 HRESULT:0x800401E3 (MK_E_UNAVAILABLE))
 
起初我以为是动作连贯起来导致工作薄未打开就执行VBA才导致的失败,但我将延迟调到极大(10000),并且工作薄打开完成蛮久之后还是会报相同错误,想问讨论区有遇到相同问题的吗?
韩瘫 最后更新于 2023/3/1

回复内容
CL 2023-03-01 14:18
#1

这是一个权限方面的问题。 quicker会有提权处理,以便于在高权限的窗口上运行(比如windows任务管理器),用quicker直接打开的excel也会有一定的权限提升。 

通过windows直接打开的excel,或者双击文件打开的excel,通过quicker打开excel文件启动的excel,则不会提权,是以低权限运行的,为了避免这些情况失败,目前运行VBA的处理都是在低权限模式下运行。这时候无法控制用Quicker直接启动的excel。

总结:以quicker直接启动的excel权限太高,导致以低权限模式运行的执行VBA的模块无法使用。


解决办法(任选一种):

1)从windows启动excel;

2)运行bat脚本方式启动,脚本内容 start excel;

3)启动excel文档;


韩瘫 回复 CL 2023-03-01 14:19 :

好的,十分感谢!

回复主贴