以编程方式打开工作簿时是否可以跳过文件validation?

我有一个大约100MB大的Excel文件,我打开这个代码,按下UserFormbutton时运行:

Public Sub SelectButton_Click() fNameAndPath = Application.GetOpenFilename(Title:="Please Select a Report") If fNameAndPath = False Then Exit Sub End Sub 

由于这个文件非常大,在打开之前需要一段时间才能validation,而且这个validation占了我整个macros完成时间的一半左右(我在Excel 2013中工作,并且这个文件没有从networking打开或共享驾驶)。 如果我手动打开文件,那么在validation三秒钟后,我可以select跳过validation。 这个问题是它打开受保护的视图中的文件,我无法使用它。

使用VBA,有没有一种方法来“强制跳过”这个耗时的validation,同时避免受保护的视图?

当Excel完全closures时,此警告/指引将显示在开始启animation面的左下angular:

在这里输入图像说明


当Excel已经打开时,这个警告/指南出现在右下angular:

在这里输入图像说明

到目前为止,有两个解决scheme,我发现有用的解决这个问题,感谢上面的意见:

1.在Windows的registry设置中禁用Excel文件的Officevalidation:

我更喜欢使用早期绑定,所以我build议在VBA编辑器窗口中打开工具窗口,select“引用…”,然后选中“Windows脚本宿主对象模型”旁边的框,然后单击确定。 这将启用智能感知,因为你正在写你的VBA:

 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,则在文件path中将使用15.0以外的内容。

但是,这种方法的一个明显的问题就是删除计算机上任何Excel文件的validation,甚至是那些可能有恶意代码的文件,或者可能从危险的位置(如Temp或Downloads文件夹)运行的文件。

此外,写入Windowsregistry可能会被取消,具体取决于您当前的环境或权限。 出于这个原因,我build议一个不同的解决scheme:

2.将Excel文件的位置设置为Microsoft Excel中的可信位置:

  1. 可以通过VBA在registry中设置一个新的可信任位置,但是由于这个方法是供那些无法访问registry的人使用的,所以我们不会介入。

    要将文件的位置(假设它是C:\中的“Excel Files”文件夹)作为受信任位置,首先单击文件选项卡,然后单击文件菜单底部的选项:

    在Excel文件菜单上选择选项

  2. 在打开的“Excel选项”窗口中,单击侧边菜单底部的信任中心 ,然后单击出现在右侧的信任中心设置button:

    在这里输入图像说明

  3. 最后,单击添加新位置...选项,然后inputC:\Excel Files\ (或者您的文件夹位置是什么;甚至可以浏览到它),然后单击确定 。 如果需要,也可以选中包含子文件夹的选项。

    在这里输入图像说明