我已经做了一个有用的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