我有一个大约 100MB 大的 Excel 文件,我使用以下代码打开该文件,按下用户窗体按钮时运行该代码:
Public Sub SelectButton_Click()
fNameAndPath = Application.GetOpenFilename(Title:="Please Select a Report")
If fNameAndPath = False Then Exit Sub
End Sub
由于此文件太大,因此在打开之前需要一段时间进行验证,并且此验证大约占我整个宏完成所需时间的一半(我正在使用 Excel 2013,并且此文件不是从网络或共享驱动器)。如果我手动打开文件,则我可以选择在验证三秒后跳过验证。问题是它在 protected View 中打开文件,我无法在其中使用它。
使用 VBA,有没有办法“强制跳过”这种耗时的验证,同时避免 protected View ?
当 Excel 完全关闭时,此警告/指南将出现在打开的启动屏幕的左下角:
当 Excel 已打开时,此警告/指南将显示在右下角:
最佳答案
由于上面的评论,到目前为止,我发现有两种解决方案对于解决此问题很有用:
1。在 Windows 注册表设置中禁用 Excel 文件的 Office 验证:
我更喜欢使用早期绑定(bind),因此我建议在 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 注册表。因此,我推荐一个不同的解决方案:
2。将 Excel 文件的位置设置为 Microsoft Excel 中的受信任位置:
关于excel - 以编程方式打开工作簿时可以跳过文件验证吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42027919/