簡體   English   中英

加載項工作簿中的Application.OnTime_Open

[英]Application.OnTime in Add-In Workbook_Open

我已經構建了一個自定義Excel加載項,並且當前正在嘗試找到一種方法,以便在新版本的加載項可用時通過VBA提示用戶。

我嘗試僅使用workbook_open事件檢查最新版本,然后使用用戶窗體提示用戶,但是我發現,當Excel加載觸發用戶窗體的加載項時,Excel停止加載用戶實際嘗試打開的工作簿,並且重新加載該加載項。 因此,當用戶窗體按我希望的方式工作時,用戶將獲得一個空白(不讀取工作表)帶有加載項的Excel Shell。

因此,我考慮使用Application.OnTime將VBA推遲到加載項和目標文件都打開之后。 我在這里這里都感到這是可能的,但是我只能使其在.xlsm文件而不是.xlam文件中工作。

這是我正在測試的代碼:

Sub Workbook_Open()
    Application.OnTime Now() + TimeValue("00:00:05"), "Test_Addin.xlam!Versioning.Notify_User"
End Sub

並在常規代碼模塊中:

Sub Notify_User()
    MsgBox "Hello"
End Sub

所以,我的問題是: 我在這里做錯了嗎?

我想知道是否有關於如何加載/設計加載項的事情,以防止它允許執行此類操作。

或者,您可以想到其他方法嗎?

我讀了Dick Kusleika撰寫的有關該主題的有趣的博客文章 (和評論),但聽起來有些人在每個子過程中都進行了版本檢查……我有很多過程,所以聽起來並不好。另一種選擇,盡管我可能不得不求助於它。

好吧,時間至關重要,因此我訴諸最不希望的選擇:在每個過程的開始進行檢查。

對於感興趣的各方,這是我的做法:

在每個子過程開始的某個地方,我放置了以下代碼行:

If Version_Check Then Call Notify_User

在我的Versioning模塊中,我輸入了以下功能和過程:

Function Version_Check() As Boolean
    Installed = FileDateTime(ThisWorkbook.FullName)
    Available = FileDateTime("\\NetworkDrive\Test_AddIn.xlam")
    If Installed < Available Then Version_Check = True
End Function

Sub Notify_User()
    Update_Check.Show
End Sub

因此,每次運行過程時,此代碼都會檢查公司網絡上的版本,該版本的修改后的日期時間大於已安裝的加載項的日期時間。

我仍然非常樂於接受其他檢查新版本的方法,請隨時發布答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM