gpt4 book ai didi

Excel 加载项,何时检查更新?

转载 作者:行者123 更新时间:2023-12-04 21:57:45 25 4
gpt4 key购买 nike

我已经制作了一个有用的 Excel VBA 加载项,几乎可以发布了。我只有一个问题。我希望加载项在运行时检查更新,并在用户使用旧版本时通知用户。

我编写了一个公共(public)子程序,它将使用 Internet Explorer 自动化检查我的网站是否有更新。当我手动运行它时它工作正常。

我的问题是,我什么时候应该调用 CheckForUpdate()子?我试过把它放在 Workbook_Open() ,但我发现的问题是,如果时间过长,它会阻止 Excel 正确加载。

插件编写者检查更新是否有标准方法?为什么我在 Workbook_Open() 中有代码时 Excel 不加载工作簿?

谢谢!

编辑 : 这是我的全部代码。如果将此添加到加载项工作簿,然后激活加载项,我将无法打开任何 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 版本,所以我仍然需要解决。

最佳答案

好的,我运行了您的代码并使用 Excel 2013 重现了该问题。我没有在任何其他版本上进行测试。

看起来如果您的代码在工作簿可见之前运行,就会出现问题。我认为这与 IE 部分有关,而不是其他任何事情。

我尝试使用 Application.OnTime Now + TimeValue("00:00:15"), "CheckForUpdate" .这样做的问题是,如果用户启动 excel 并且在打开工作簿之前等待计时器,您将遇到完全相同的问题。我怀疑建议异步 VBScript 的人会遇到完全相同的问题,但方式要复杂得多。

所以让我们简单一点。您要求放置代码的位置比 Workbook_Open() 更好。 .有一个。

这对我有用:

启动一个新的加载项项目。添加您的CheckForUpdates功能到一个新的模块。将以下代码添加到 ThisWorkbook .

Private WithEvents App As Application

Private Sub App_WorkbookActivate(ByVal Wb As Workbook)
CheckForUpdate
End Sub

Private Sub Workbook_Open()
Set App = Application
End Sub

使用此代码,您的更新过程将在激活工作簿时运行。它似乎不会在那里引起问题。

请让我知道这是否有效。祝你好运。

关于Excel 加载项,何时检查更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41150748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com