第一个坑点 是我使用vba自带的shell
如Shell "cmd.exe"
或者 先
set WScript=CreateObject("WScript.Shell")
然后再
WScript.Run("cmd.exe
会提示拒绝的权限。
查了很久,发现是wps有一个沙盒保护模式,需要关闭并重启wps,就能正常了。
参考资料:WPS运行VBA代码Shell函数报[运行时错误'5']或[运行时错误'70']的解决方法
最近一段时间收到很多客户的反馈,在重启电脑或重启WPS后,之前一直正常运行的程序会报错,报错代码为[运行时错误'5']或[运行时错误'70'],如下图所示。
远程调试程序发现报错的是Shell函数,代码片段如下。
Sub kkkk()
file = ThisWorkbook.Path & "\data.exe"
Shell file
End Sub
Sub kkkk02()
Set wsh = CreateObject("WScript.Shell")
file = ThisWorkbook.Path & "\data.exe"
wsh.Run file
End Sub
问题原因:WPS在新版本新增【沙箱保护】功能,并且默认为开启状态,当用户主动更新或自动升级到新版本时,沙箱保护功能会导致VBA代码中的Shell函数没有权限运行。
解决方法:依次点击【WPS 表格】→【三】→【设置】,关闭【沙箱保护】功能,然后重启WPS即可解决。
第二个是VBA会提示VBProject作用于对象_workbook时失败
如果是excel,那么应该去宏----安全性---勾选----信任对于.......
但是wps的选项--信任中心没有这个功能,今天找了很久,终于发现在【开发工具--宏安全性--可靠发行商 中有一个 “”信任对于“visual Basic 项目”的访问】,需要勾选这个,就能正常了