私はすぐに公開できる便利なExcel VBAアドインを作った。私には1つの問題しかありません。アドインが実行されるたびにアドインをチェックして、古いバージョンを使用しているかどうかをユーザーに通知します。Excelアドイン、いつ更新をチェックしますか?
インターネットエクスプローラの自動化を使用して私のウェブサイトでアップデートをチェックする公開サブを書いています。手動で実行するとうまくいきます。
私の問題は、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
更新:私は今、3台のコンピュータ上でテストしてみました。そのうち2つにExcel 2013があり、問題が発生します。 1つにはExcel 2016があり、問題はありません。私はすべてのExcelバージョンをサポートしたいので、まだ解決策が必要です。
ユーザーがインターネットに接続していないときに、更新チェッカーが正常に終了することを願っています。 – YowE3K
'CheckForUpdate()'コードを表示します。最も長い時間を要するコードはどれですか?別のプロセスでチェックインするか、または非同期モードでXHRを使用してチェックインする必要があります。 – omegastripes
もし 'Workbook_Open()'に干渉しているのであれば、 'Application.OnTime'を使用してブックがロードされてから10〜15秒間スケジュールするのはどうですか? – Comintern