3

VBAアプリケーションの現在のバージョン番号を含む単純なXMLファイルがあります。アプリケーションの初期化時に、関数を呼び出してGetCurrentVersionNumber()そのバージョン番号を取得します。問題は、サーバー上のXMLファイルを変更すると、VBAがそれを認識しないことです。XMLファイルのキャッシュバージョンを読み取っているようです。

ロードされているXMLファイルがキャッシュされないようにする方法はVBAにありますか?または、これに対する別の回避策はありますか?

関数は次のとおりです。

Function GetCurrentVersionNumber() As String

    Dim doc As MSXML2.DOMDocument60
    Set doc = New MSXML2.DOMDocument60

    doc.async = False
    If Not doc.Load("http://mywebsite.com/myfile.xml") Then
        Debug.Print "Unable to retrieve current application version."
        GetCurrentVersionNumber = ""
        Exit Function
    End If
    GetCurrentVersionNumber = doc.SelectSingleNode("/Application/Version").Text

End Function

デフォルトのブラウザ(Chrome)に移動し、XMLファイルに移動し、Shift + F5を押して強制的に再読み込みすると、その後VBAアプリケーションが更新されます。

4

1 に答える 1

3

1 つの方法は、URL の末尾に (ランダムな) ダミーのクエリ文字列を追加することです。これにより、再取得が「強制」されます (URL の一意性ではクエリ文字列が考慮されるため)。

Dim qs as string
qs = Cstr(rnd()*1e6)

If Not doc.Load("http://mywebsite.com/myfile.xml?" & qs) Then
...
于 2012-09-11T17:32:59.233 に答える