我已經做了一個有用的Excel VBA加載項,我幾乎可以發佈了。我只有一個問題。我希望加載項在運行時檢查更新,並在用戶使用舊版本時通知用戶。Excel加載項何時檢查更新?
我寫了一個公共小組,將使用Internet Explorer自動化檢查我的網站的更新。手動運行時它工作正常。
我的問題是,我應該何時打電話CheckForUpdate()
子?我試過把它放在Workbook_Open()
,但我發現的問題是,如果它太長,它會阻止正確加載Excel。
有沒有標準的方式,附加的作家檢查更新?爲什麼Excel在我的代碼Workbook_Open()
中沒有加載工作簿?
謝謝!
編輯:這是我的整個代碼。如果將其添加到加載項工作簿,然後加載項被激活,我無法打開任何Excel文件。
Private Sub Workbook_Open()
Call CheckForUpdate
End Sub
Public Sub CheckForUpdate()
Dim ie As Object
Set ie = CreateObject("internetexplorer.application")
ie.Visible = False
ie.navigate "https://example.com/checkforupdate"
Do While ie.readystate <> 4: DoEvents: Loop
Set HTML = ie.document
If HTML.DocumentElement.innerHTML = "update is available" Then
MsgBox "An update is ready. Go get it!"
Else
MsgBox "no update"
End If
Set ie = Nothing
End Sub
更新:我已經在三臺計算機上進行測試了。其中2人有Excel 2013,問題發生。一個有Excel 2016,它沒有問題。我想支持所有的Excel版本,所以我仍然需要解決。
我希望您的更新檢查器可以在用戶沒有連接到互聯網時正常退出。 – YowE3K
顯示'CheckForUpdate()'代碼。哪一行代碼花費的時間最長?您應該在另一個進程中運行檢查,或者通過XHR以異步模式運行。 – omegastripes
如果它干擾'Workbook_Open()',爲什麼不在工作簿加載後使用'Application.OnTime'來安排它10-15秒? – Comintern