如何处理 Excel VBA 宏中的受保护视图错误

如何处理 Excel VBA 宏中的受保护视图错误


介绍。我有一个本地网站,其中一个页面用于多个用户在他们的 PC 上下载 Excel 报告。该文件是通过 Oracle Business Intelligence Publisher (OBIP) 使用我们数据库中的一些数据自动生成的,因此该文件具有旧的 MS Excel 97-2003.xls格式。但是,我们使用 Office 2019 及其较新的 Excel 版本来打开.xls文件。
问题发生。该文件包含 VBA 宏,它只运行一次,并根据不同工作表中的某些单元格值执行多项操作。不幸的是,Excel 产品hide允许autofit受保护的视图默认情况下,因此当新用户打开任何报告时,他都会面临两个问题:

  • 按下“启用”按钮之前,功能中的命令Workbook_Open不起作用(这会导致下一个问题)
  • 启用编辑后出现错误:Application-defined or object-defined error
    调试此错误时,它停在以下行:If [MyNamedcell] = "1" Then

失败的尝试。正如我所见,这意味着在用户启用编辑和 VBA 运行后,此刻没有定义的名称。这就是为什么我尝试使用此脚本在宏中启用编辑的原因:

If Application.ProtectedViewWindows.Count > 0 Then
    For Each ProtectedViewWindow In Application.ProtectedViewWindows
        ProtectedViewWindow.Activate
        Set Workbook = ProtectedViewWindow.Edit()
        Next ProtectedViewWindow
End If

但它让我編輯錯誤打开文件时:Editing has been blocked for this file
调试此错误时,它会停在以下行:Set Workbook = ProtectedViewWindow.Edit()

我在网上找不到与此类似的错误!
问题如何在启用编辑后防止用户看到错误并成功完成所有宏操作受保护的视图消息栏
应该注意到:

  • 启用所有宏选项在某种程度上已经在每个用户的 Excel 中打开。
  • 解决我的问题的另一种方法是禁用所有受保护的视图中的选项信任中心在处理我的报告之前,但它可能不是 100% 安全,因为宏中存在问题,另一个新用户可能会错过有关禁用选项的信息并再次面临问题。

谢谢你!

答案1

我不确定是否能立即解决这个问题,但可以考虑一些解决方法,

  • 禁用受保护的视图。正如你提到的,禁用所有受保护的视图信任中心中的选项可能不是理想的解决方案,但您可以向用户提供明确的说明,说明如何针对特定报告暂时禁用它。或者,考虑将下载文件的文件扩展名从 .xls 更改为 .xlsm,这是带有宏的 Excel 文件的格式。但是,这可能不是理想的选择。

  • 处理‘Workbook_Open’私下里即检查文件是否在受保护的视图出口如果是,则执行宏。这样,宏将不会运行,直到用户启用编辑,从而避免错误。例如,

Private Sub Workbook_Open()
    If Application.ProtectedViewWindows.Count > 0 Then
        Exit Sub
    End If
    ' Continue with the rest of VB
End Sub

希望它能有点帮助。

答案2

如果有人Editing has been blocked for this file在宏开始处理时收到一条消息:这种错误的原因可能是您打开文件的方式,因此请尝试其他打开方式。 就
我而言,当我使用.xlsExcel 用户界面在受保护的视图中重现我的用户遇到的错误(我无法通过启用所有受保护的视图选项来重现它):
Excel 主页 → 打开 → 文件夹 → 使用受保护的视图打开

相关内容