80986


VBAで、URLで指定したファイルのタイムスタンプを取得したいです。

例  
`http://example.com/files/abcde.xlsx`

一度ダウンロードしてしまえばいくらでも取得できるとは思うのですが、ダウンロードする前に確認して、新しくなっているようならダウンロードする処理をさせたいと思っています。

よろしくお願いします。


CC BY-SA 4.0
2021-08-22T23:22:56.443
80970
2021-08-23T10:10:44.260
2021-08-23T10:10:44.260
3060
9374
question
vba
VBAからURLで指定したファイルのタイムスタンプを取得したい


MSXML2.XMLHTTPを使用してヘッダから更新日時を取得する例です。  
`Last-Modified`がヘッダに含まれている場合はファイルをダウンロードせずに更新日時を表示します。

コメントと[How to get http response header in
VBScript](https://stackoverflow.com/q/32655302)を参考に実装しました。

[code]

    Sub ボタン1_Click()
        Dim h
        Set h = CreateObject("MSXML2.XMLHTTP")
        h.Open "HEAD", "http://localhost:8000/Book1.xlsx", False
        h.send
        Dim headers
        headers = h.getAllResponseHeaders()
        If InStr(headers, "Last-Modified") > 0 Then
            MsgBox h.GetResponseHeader("Last-Modified") '通信回数を減らしたい場合はheadersをSplitしてください
        Else
            MsgBox "Last-Modifiedが見つかりません" 
        End If
    End Sub
    
[/code]


CC BY-SA 4.0
2021-08-23T06:06:28.687
80986
2021-08-23T06:06:28.687
9820
80970
answer