由于受保护的视图,OnTime事件调度失败

时间:2016-12-14 13:42:26

标签: excel vba excel-vba excel-2016

从不受信任的来源打开Excel文件时,系统会询问我是否要"启用编辑": enter image description here

但是,当我点击该按钮时,在包含OnTime的Excel文件 - Workbook_Open - 事件中的日程安排中,我收到一条错误消息并且宏中止:

enter image description here enter image description here

调用宏的代码位于ThisWorkbook - 对象中,如下所示:

Private Sub Workbook_Open()
    Call Tempo
End Sub

虽然宏本身位于常规模块中,但看起来像这样:

选项明确

Public VARTIMER As Variant
Const TimeOut As Long = 30 'in minutes

Sub Salva()
    ActiveWorkbook.Save
    Call Tempo
End Sub

Sub Tempo()
    VARTIMER = Format(Now + TimeSerial(0, TimeOut, 0), "hh:mm:ss")
    If VARTIMER = "" Then Exit Sub
    Application.OnTime TimeValue(VARTIMER), "Salva"
End Sub

只要文件没有在受保护的视图中打开,一切正常,但是当它出现时,我得到上面显示的错误。

任何人都可以告诉我一种方法来避免出现错误显示出现/中止代码吗?

由于公司政策/许多用户,因此无法将所有网站标记为受信任位置。

1 个答案:

答案 0 :(得分:0)

解决方案方法说明:
问题依赖于,为了运行宏,Excel实例需要权限 - 尚未被授予 - 。此外,分析从服务器检出的文件时可能存在错误(例如,一个SharePoint文件)。
解决方案:
在Workbook_Open活动中,您可以尝试以下内容:

Private Sub Workbook_Open()
On Error Resume Next
If ActiveWorkbook.ReadOnly = False And Application.ProtectedViewWindows.count < 0 Then Call Tempo
End Sub

可以在this questionhere中查阅更多信息。

** PS:请注意,如果未授予权限,则无法运行宏。