AccessVBAにてhttps://server/webDavというWebDavフォルダにアクセスしようと思っています。実際のサンプルプログラムを教えてくれた方に最低100ポイント差し上げます。よろしくお願いします。

以下が条件です。
・サーバはWin2000Server。IISでhttps(認証有り。)にてWebフォルダを共有。
・クライアントはWin2000 or XP。Accessも2000以上。
・ファイル・フォルダのコピー(送受信)・削除をしたい。
・実際はInternetで行います。ファイルの送受信の失敗成功を可能な限り拾いたい。(WebDavはhttpと違ってその辺は大丈夫なんでしょうか?)
認証つきのサイトにAccessVBAでアクセスさえ完了できれば通常のローカルファイル操作の感覚で出来るのでは?と思っているのですが・・・。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2006/07/27 11:48:28
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:ohmix1 No.2

回答回数235ベストアンサー獲得回数14

ポイント100pt

XMLHTTPでUploadするにはエンコード処理とかが必要になってきます。


OLE DBにWebDav用のプロバイダがあるようなので、こっちのほうが簡単かもしれません。

http://q.hatena.ne.jp/1108018134


>通常のローカルファイル操作の感覚で出来るのでは?


XPならWebDAVをドライブに接続したりできるので何でもできそうですが、2000ではわかりません。

id:matttsu

時間が無いのでとりあえず返信だけ。

ありがとうございます。

教えていただいた方法でファイルのアップロードが出来ました。

ちゃんとIISのログにも「Microsoft+Data+Access+Internet+Publishing+Provider+DAV+1.1」と出ています。

ただフォルダの移動がOLE DBだと出来ないっぽいですね。

その場合は上のXMLHttpRequestでやるしかないのかな・・。

ファイルの移動や削除はXMLHttpRequestでも出来るのにフォルダだと403になってしまうんですよね。

ただこれ以上はちょっと質問の内容が違ってきてしまいそうなので明日にでも新しい質問を起こそうと思います。ありがとうございました。

2006/07/26 19:57:13

その他の回答1件)

id:sabro No.1

回答回数2ベストアンサー獲得回数0

ポイント100pt

http://www.ki.rim.or.jp/~kuro/WebDAV/index.html

WebDAVを使ったスクリプトは、このサイトに実践的な説明があります。


「Microsoft DOMとの戦い」の2コンテンツに、XMLHttpRequestオブジェクトを使用したサンプルがあります。

VBScriptですが、VBAでも同じ感覚でできると思います。


SSLは、昔試した時に出来たのですがやり方を忘れてしまいました。

おそらく、httpをhttpsに変えるだけでいいはずです。

その時はInternetでも問題なくファイルの送受信ができました。




基本的な流れは以下のようになります。


’XMLHttpRequestオブジェクトを作成

Dim objRequest

set objRequest= WScript.CreateObject("Microsoft.XMLHTTP")


’WebDAV要求コマンドをセット(最後の引数は、同期・非同期のフラグ)

objRequest.open "GET", "http://localhost/index.htm", False


’必要なヘッダがあればセット

objRequest.setRequestHeader "hoge", "fuga"


’要求を送信

objRequest.send


’レスポンスを取得して処理

Msgbox objRequest.responseText




ファイルの送信なら、PUT要求を使えばいいはずです。

送受信の結果はobjRequest.Statusあたりで取れるのではないでしょうか。

id:matttsu

ありがとうございます。

教えていただいたページのとおりこのようなスクリプトは出来ました。

ただこの場合サーバ上のフォルダからサーバ上のフォルダですよね?

GETでローカルフォルダにサーバ上のファイルをダウンロードする or PUTでローカルファイルをサーバにアップするやり方はどうすればよいのでしょう?

ローカルフォルダの指定って出来ないのでしょうか?

putで試してみたら403エラーになってしまいます。copyは出来るし、IEのWebフォルダからだとアップロードはうまくいくんですが・・。

objRequest.Open "PUT", "https://server/webDav/", False, "user", "password"

objRequest.Send "C:\Test.txt"

2006/07/26 15:37:28
id:ohmix1 No.2

回答回数235ベストアンサー獲得回数14ここでベストアンサー

ポイント100pt

XMLHTTPでUploadするにはエンコード処理とかが必要になってきます。


OLE DBにWebDav用のプロバイダがあるようなので、こっちのほうが簡単かもしれません。

http://q.hatena.ne.jp/1108018134


>通常のローカルファイル操作の感覚で出来るのでは?


XPならWebDAVをドライブに接続したりできるので何でもできそうですが、2000ではわかりません。

id:matttsu

時間が無いのでとりあえず返信だけ。

ありがとうございます。

教えていただいた方法でファイルのアップロードが出来ました。

ちゃんとIISのログにも「Microsoft+Data+Access+Internet+Publishing+Provider+DAV+1.1」と出ています。

ただフォルダの移動がOLE DBだと出来ないっぽいですね。

その場合は上のXMLHttpRequestでやるしかないのかな・・。

ファイルの移動や削除はXMLHttpRequestでも出来るのにフォルダだと403になってしまうんですよね。

ただこれ以上はちょっと質問の内容が違ってきてしまいそうなので明日にでも新しい質問を起こそうと思います。ありがとうございました。

2006/07/26 19:57:13

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません