忍者へFTP接続でVBAでファイルをアップロードしたいです。
http://officetanaka.net/excel/vba/tips/tips47.htm
を参考に実践してるのですがうまくできません。
FFFTPを使っての手動でのアップロードは問題なく行えます。
-----------------------------------------------------------------
Sub Sample1()
Dim FTP, rc As Long, Server As String, User As String, Pass As String
Dim Target As String, Folder As String
Set FTP = CreateObject("basp21.FTP") ''FTPオブジェクト
Server = "ftp.xxxxx.com" ''ホストアドレス
User = "toru_tanaka" ''ユーザー名
Pass = "password" ''パスワード
Target = Application.GetOpenFilename() ''送信ファイル
If Target = "False" Then Exit Sub
Folder = "/" ''送信フォルダ
rc = FTP.Connect(Server, User, Pass)
If rc <> 0 Then
MsgBox "FTP接続できませんでした。", vbCritical
FTP.Close
Exit Sub
End If
rc = FTP.PutFile(Target, Folder)
If rc <> 1 Then
MsgBox Dir(Target) & "を送信できませんでした。", vbCritical
FTP.Close
Exit Sub
End If
MsgBox Dir(Target) & "を送信しました。", vbInformation
FTP.Close
End Sub
-----------------------------------------------------------------
の
rc = FTP.Connect(Server, User, Pass)
If rc <> 0 Then
MsgBox "FTP接続できませんでした。", vbCritical
FTP.Close
Exit Sub
End If
これは通過できるのですが、
rc = FTP.PutFile(Target, Folder)
If rc <> 1 Then
MsgBox Dir(Target) & "を送信できませんでした。", vbCritical
FTP.Close
Exit Sub
End If
で0が返るようで、送信できませんでした。となります。
トップページの階層にアップしたい場合は
Folder = "/"
でいいんですよね?
Folder = "/" にしても
Folder = ""にしても失敗します。
FFFTPのメッセージランを見ていると、
VBAで送信できなくても
-----------------------------------------------------------------
>TYPE A
200 転送タイプを A にセットしました
>PASV
227 Entering Passive Mode (***).
ダウンロードのためにホスト *** (***) に接続しています. (TCP/IPv4)
接続しました. (TCP/IPv4)
>MLSD
150 ASCIIモードのデータ接続をオープンします MLSD
226 転送が完了しました
ファイル一覧の取得は正常終了しました. (821 Bytes)
-----------------------------------------------------------------
が表示されます。
何が間違ってるのでしょうか?
ご教授よろしくお願いします。
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# …
rc = bftp.PutFile("c:\html\images\*","html/images",1) ' バイナリファイルの送信
ここでは"html/images"と絶対パス指定になっていません。これを"/html/images" とすると同じようになるでしょうね。
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"
のような形式だとうまくいきませんか?
後はアップロードするファイル名が日本語表記の場合なども失敗します
Folder = "public_html"
Folder = "data"
もダメでした。
ルートフォルダ(ftp.xxxxx.com)への書き込みが許可されてるかどうかわからないので
まずそこから確認してみます。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォルダ内の最初のファイル名...
-
XREA使用で作成したHTMLファイ...
-
htmlのリンクについて(Apache)
-
java_run.batがダウンロードで...
-
HTMLからフォルダを開きたい
-
googleドライブで、PDFファイル...
-
どのページもすべて同じURLなの...
-
HTMLページが勝手にダウンロー...
-
医療画像(Windows用)をMacで...
-
ページ全体を中央に配置したい...
-
PS4で、「バージョン5.05以上の...
-
HPにPDFデータを載せるの...
-
メモ帳でデータが消えるのです...
-
文字コードについて
-
無償で使えた Turbo D...
-
京都駅から延暦寺へのアクセス
-
WEBページのヘッダーフッターを...
-
、URL化させるにはどうしたらい...
-
PDFファイルをダウンロード...
-
POSTしたデータの文字コードがu...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
1つ下の階層のフォルダに相対...
-
複数のindex.htmlを作ってもい...
-
URLに「.html」の拡張子がなく...
-
XREA使用で作成したHTMLファイ...
-
リンク先に日本語フォルダがあ...
-
.htmと.htmlの違い
-
htmlでリンクに勝手にindex.htm...
-
URLの日付について
-
FTPしたのに、ページが真っ白です
-
トップページ「/index.html」の...
-
webサイトの「index」を非表示...
-
Apacheで、indexの拡張子別に優...
-
サーバー内のフォルダにある写...
-
URLの.html省略について
-
真っ白な画面の意味はなんでし...
-
相対パス
-
ホームページビルダー6サーバー...
-
URLにCGIのファイル名を出さな...
-
ホームを index.html から inde...
-
フォルダ内の最初のファイル名...
おすすめ情報