• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:忍者へFTP接続でVBAでファイルをアップロード)

VBAを使用して忍者にFTP接続し、ファイルをアップロードする方法

このQ&Aのポイント
  • VBAを使用して忍者にFTP接続し、ファイルをアップロードしたいですが、うまくできません。
  • FFFTPを使用して手動でのアップロードは問題ありませんが、VBAではうまくいきません。
  • rc = FTP.PutFile(Target, Folder)で0が返るため、ファイルの送信ができません。どこが間違っているのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

トップページの階層=/ ルートとは限りません。 指定したパスはルート指定です。もちろん、これは、UNIX系、Linux系のOSである場合ですが、まあ、FTP、HTTPサーバーであれば、解釈できるような事もおおいが。 FTP、HTTPなどは、公開用フォルダーを指定されています。その場合、そこがHOMEとなり、/ or c:\ ではないですね。FTPなどリモート操作は、ログインしてコネクションした場合、ログインしたユーザーのHOME又は、そのサービスが公開されているパスに導かれます。それで絶対してしまうと、アクセス不能な場所を指定しまうこともあります。 これはクライアントツールにもよるし、サーバー側のサービスにもよります。 例えば、ログインして呼び出された所を指定するならカレントを意味するドット " . " -> ログインした時のフォルダーを指定したければ ” ./../”     → HOMEの一つ上の階層が指定された事に。 ” ../ ”と同じ を指定すれば、ほぼ動作は期待とおりになります。相対パス指定を試してみてください。””でフォルダー指定なしでも通じると思います。仕様が明確でないので、何ともいえませんが、””はリモートフォルダーを指定しなかった。という事だと思いますよ。第2引数が必須だと思われるので、””でHOME指定ということでしょう。 ただ、No1さんが指摘したように / or c:\ 直下や FTPサーバーのログインした時のHOME(ルート)は書き込み不可であることが多い。そこを確認してからですね。 なお、 >トップページの階層にアップしたい場合は で意味は通じますが、このような操作の場合、HOMEの方が一般的かと。 この辺に例が http://www.b21soft.co.jp/basp21/basp21pftp.html#putfile rc = bftp.PutFile("c:\html\images\*","html/images",1) ' バイナリファイルの送信 ここでは"html/images"と絶対パス指定になっていません。これを"/html/images" とすると同じようになるでしょうね。

ikfjdjjcpbhot
質問者

お礼

難しい言葉が出てきたので まずそこから確認していきたいと思います。 URLの方もよく見てみます。 ありがとうございます。

その他の回答 (1)

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.1

検証ができないので、はっきりとは言えないけど >トップページの階層にアップしたい場合は >Folder = "/" >でいいんですよね? 取り敢えずこれは違うと思う 質問文中に掲載されたサイトによると --- PutFileメソッドの構文は rc = ftp.PutFile(Local,Remote[,Type]) 引数Remoteを空欄にするとルートフォルダに保存されます。たとえば、ftp.xxxxx.com/test/subの場合は「test/sub」のように指定します。 --- ルートフォルダに保存する場合は Folder = "" ですが、ルートフォルダ(ftp.xxxxx.com)への書き込みは許可されているのでしょうか? 一般的なHPスペースの場合、ルートフォルダー内の public_htmlフォルダとかdataフォルダへのアクセスになるとおもうのですが Folder = "public_html" Folder = "data" のような形式だとうまくいきませんか? 後はアップロードするファイル名が日本語表記の場合なども失敗します 

ikfjdjjcpbhot
質問者

お礼

Folder = "public_html" Folder = "data" もダメでした。 ルートフォルダ(ftp.xxxxx.com)への書き込みが許可されてるかどうかわからないので まずそこから確認してみます。 ありがとうございます。

関連するQ&A