ホワイトレンド

きあいのタスキ

【GPT-5】WebDAV対応のVBAのメソッドには、どのようなものがありますか

WebDAV(Web Distributed Authoring and Versioning)に直接対応した標準VBAメソッドは存在しません。VBA自体にはHTTPやWebDAVプロトコル専用のメソッドはなく、あくまで HTTPリクエストを送る汎用機能 を使って実現する形になります。主に使われるのは以下の方法です。


1. MSXML2.XMLHTTP / MSXML2.ServerXMLHTTP

  • HTTPリクエストを送るためのオブジェクト。

  • WebDAVはHTTP拡張なので、PROPFINDMKCOLDELETE などのメソッドも指定可能。

 

Dim http As Object
Set http = CreateObject("MSXML2.XMLHTTP")

http.Open "PROPFIND", "https://example.com/webdav/folder/", False
http.setRequestHeader "Authorization", "Basic " + Base64Encode("username:password")
http.setRequestHeader "Depth", "1"
http.send

Debug.Print http.responseText

 

  • http.Open の第1引数で GET, PUT, DELETE, PROPFIND, MKCOL などWebDAV特有のメソッドも指定できます。

  • 注意:MSXML2.XMLHTTP はクライアント用、MSXML2.ServerXMLHTTP はサーバー用でタイムアウト制御が柔軟。


2. ADODB.Stream

  • ファイルのアップロード/ダウンロードに使用。

  • WebDAVに対して PUT メソッドでファイルを送る場合に便利。

 

Dim http As Object
Dim stream As Object

Set http = CreateObject("MSXML2.XMLHTTP")
Set stream = CreateObject("ADODB.Stream")

' ファイルを読み込み
stream.Type = 1 ' バイナリ
stream.Open
stream.LoadFromFile "C:\test.xlsx"

http.Open "PUT", "https://example.com/webdav/test.xlsx", False
http.setRequestHeader "Authorization", "Basic " + Base64Encode("username:password")
http.send stream.Read

stream.Close

 


3. WinHTTP.WinHTTPRequest

  • XMLHTTP とほぼ同じだが、プロキシ設定やSSL周りの制御がより柔軟。

  • WebDAVの大きなファイル送信や認証が必要な場合に向いています。


4. 標準VBAで使える主なWebDAVメソッド

  • PROPFIND:フォルダやファイルの一覧取得

  • MKCOL:フォルダ作成

  • PUT:ファイルアップロード

  • GET:ファイルダウンロード

  • DELETE:ファイル削除

  • MOVE / COPY:ファイル移動・コピー

※これらはHTTPの拡張メソッドなので、VBA側では単に文字列で指定するだけで送信可能です。


💡 まとめ

  • VBAWebDAV専用メソッドはない → HTTPリクエストを利用。

  • MSXML2.XMLHTTPWinHTTP.WinHTTPRequest が中心。

  • ADODB.Stream はファイル操作と組み合わせて使う。

  • WebDAV固有のHTTPメソッドは文字列指定で送信できる。


もしよければ、私は VBAWebDAVに接続してフォルダ一覧を取得するサンプルコード を作ってすぐに動作確認できる形で提示できます。

作りますか?