我可以在以编程方式打开工作簿时跳过文件验证吗?

时间:2017-02-03 15:42:39

标签: excel vba validation

我有一个大约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完全关闭时,此警告/指南会显示在开始初始屏幕的左下方:

enter image description here

当Excel已经打开时,此警告/指南会显示在右下角:

enter image description here

1 个答案:

答案 0 :(得分:2)

到目前为止,由于上述评论,我发现有两种解决方案可用于解决此问题:

1。在Windows的注册表设置中禁用Excel文件的Office验证:

我更喜欢使用早期绑定,因此我建议在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中的受信任位置:

  1. 可以通过VBA在注册表中设置新的可信位置,但由于此方法旨在供无法访问注册表的人使用,因此我们不会进入那个。

    要添加文件的位置(让我们将其作为C:\中的" Excel文件"文件夹)作为可信位置,请先单击“文件”选项卡然后单击“文件”菜单底部的“选项”:

    Selecting Options on the Excel File Menu

  2. 在打开的Excel选项窗口中,单击侧边菜单底部的信任中心,然后单击右侧显示的信任中心设置按钮:

    enter image description here

  3. 最后,点击添加新位置... 选项并输入C:\Excel Files\(或您的文件夹位置;您甚至可以浏览到它),然后点击确定。如果需要,您还可以选中包含子文件夹的选项。

    enter image description here