为何打开受保护视图Excel工作簿时ExcelApplication.Workbooks.Count显示为0?
为什么受保护视图下ExcelApplication.Workbooks.Count显示为0?
这个问题其实是受保护视图(Protected View)的核心设计逻辑决定的,我来给你掰扯清楚:
受保护视图里的文档没被加入正式工作簿集合
受保护视图本质是Excel的一个隔离沙箱,专门用来打开来自不安全来源(比如邮件附件、网上下载的文件)的文档,防止恶意代码搞事情。这个状态下的文档只是在沙箱里“预览”,并没有被正式添加到ExcelApplication.Workbooks集合中——相当于Excel还没把它当成自己管理的正式工作簿,所以Count自然返回0。正常视图才是正式加载状态
当你点击“启用编辑”退出受保护视图后,Excel才会把文档真正加载到工作簿集合里,这时候Workbooks.Count就会显示1,因为它已经成为了一个完整可操作的工作簿实例。额外小技巧
如果你的代码需要判断文档是否处于受保护视图,可以用工作簿的IsInProtectedView属性(比如Workbooks(1).IsInProtectedView),但要注意:只有当文档退出沙箱进入正式集合后,这个属性才能被访问——在受保护视图阶段,你连Workbooks集合里都找不到它的身影。
内容的提问来源于stack exchange,提问作者Beginner
相关产品推荐
相关产品推荐

