2016-12-14 41 views
0

當從不受信任的起源打開一個Excel文件中,有人問我,如果我想「啓用編輯」: enter image description here準時事件調度失敗,因爲受保護的視圖

然而,當我點擊該按鈕,其中包含在Workbook_Open -event OnTime -scheduling的Excel文件,我得到一個錯誤消息,並且宏中止:

enter image description here enter image description here

調用宏的代碼是在ThisWorkbook -object,看起來像這樣:

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 

這一切工作完全正常,只要因爲文件不是在受保護的視圖中打開的,但是當它出現時,我得到上面顯示的錯誤。

任何人都可以告訴我一種避免顯示錯誤/中止代碼的方法嗎?

由於公司政策/許多用戶將所有站點標記爲受信任位置不是一種選擇。

回答

0

解決辦法的解釋:
問題依賴,爲了運行宏,Excel的實例需要哪位沒有被授予yet-。也允許,有可能是一個錯誤,當它分析從服務器檢出的文件(例如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:請注意,如果權限未被授予,它將無法運行宏。