我有一个大约100MB大的Excel文件,我打开这个代码,在按下UserForm按钮时运行:
Public Sub SelectButton_Click()
fNameAndPath = Application.GetOpenFilename(Title:="Please Select a Report")
If fNameAndPath = False Then Exit Sub
End Sub
因为这个文件太大了,所以在打开之前需要一段时间才能验证,这个验证占我整个宏完成时间的一半(我在Excel 2013中工作,而且这个文件没有打开网络或共享驱动器)。如果我手动打开文件,那么在获得三秒验证后我会选择跳过验证。这样做的问题是它在受保护的视图中打开文件,我无法使用它。
使用VBA,是否有办法“强制跳过”这一次耗费验证同时避免受保护的视图?
当Excel完全关闭时,此警告/指南会显示在开始初始屏幕的左下方:
当Excel已经打开时,此警告/指南会显示在右下角:
答案 0 :(得分:2)
到目前为止,由于上述评论,我发现有两种解决方案可用于解决此问题:
我更喜欢使用早期绑定,因此我建议在VBA编辑器窗口中打开“工具”窗口,选择“参考...”,然后选中“'”旁边的框。 Windows脚本宿主对象模型',然后单击确定。这将在您编写VBA时启用IntelliSense:
Dim wsh As New WshShell
wsh.RegWrite "HKCU\Software\Microsoft\Office\15.0\Excel\Security\FileValidate\DisableEditFromPV", 0, "REG_DWORD"
Set wsh = Nothing
这适用于Excel 2013.如果您使用的是其他版本的Office或Excel,则会在文件路径中使用15.0
以外的其他内容。
但是,此方法存在明显的问题,即删除计算机上任何Excel文件的验证,即使那些可能包含恶意代码或可能从危险位置运行的文件,例如Temp或Downloads文件夹。
此外,根据您当前的环境或权限,可能不允许写入Windows注册表。出于这个原因,我建议采用不同的解决方案: