質問
-
フリー
VBAによるファイルの送受信方法 -
本文:
FTPサーバーとしての利用を考えています。VBAにWinInet.DLLのAPI関数を使用してファイルのアップロード、ダウンロードをテストしています。
テキストファイルは問題なく送受信できますが、エクセルファイルやワードファイルは何もできないままにプログラムが終わります。
さくらサーバーでも同じプログラムを使用していますが、問題なくファイルの送受信ができています。
スターサーバーフリーにおいてはバイナリー形式での送受信はサポートされていないのでしょうか、それとも何か設定がちがっているのでしょうか?
- 緊急度:通常投稿者:ふたこdeネットさん投稿時間:2021/03/12 14:46
回答 No.10968
-
本文:
>>
フリープランでは、アップロード可能なファイルサイズの上限を「3MB」としています。
https://www.star.ne.jp/free/faq/homepage_upload_limit.php
<<
この制限に該当するのでは?
■
>FTPサーバーとしての利用
ファイル倉庫としての利用は、グレーなんじゃないかなぁと思う。 - 投稿者:k-tanさん 投稿時間:2021/03/12 15:20
質問者からのコメント
ご指摘ありがとうございます。しかしながら、テストに使用しているファイルサイズは、2,692バイトのテキストファイル、32,377バイトのエクセルファイル、それに238,396バイトのワードファイルですので、
制限サイズを下回っています。
バイナリー形式でのファイル転送には対応しているという返事をNetowlさんからいただいているのですが、やはり私が期待している用途にはあわないように思えます。
回答 No.10969
-
本文:
>VBAにWinInet.DLLのAPI関数
FTPの機能を使ってるのなら、バイナリが転送できないのなら、画像ファイルとかがアップロードできなくなるので、困りますよね
FTPとしては、バイナリーのアップロードは可能なはずでは?
FTPアプリで、バイナリー転送で、バイナリーファイルを転送してみれば
はっきりすると思う。
■
で、VBAにWinInet.DLLのAPI関数を使うとできないという現象が出ているという話ですよね。
- 投稿者:k-tanさん 投稿時間:2021/03/12 19:08
質問者からのコメント
FFFTPの場合はすべてのファイルが送受信できています。問題はVBA側にあるとしても、テキストファイルの送受信ができること、さくらサーバーで使用していた時は正常にファイルの送受信ができていたことから、何かの設定違い(忘れ)ではないかと思いましたので、お知恵をお借りしたいと思いこのQ&Aに頼ることにしました。
回答 No.11014
-
本文:
平素はネットオウルをご利用いただき誠にありがとうございます。
ネットオウル運営チームです。
本ご質問は一定期間新たな回答がなかったため
運営チームで締め切らせていただきました。
■質問の締め切りについて
Q&A掲示板はユーザー様同士の交流掲示板です。
回答がもらえた場合、回答者へお礼コメントをしましょう。
問題が解決した際にはベストアンサーを選び、
質問を締め切ってください。
■再度のご質問について
ご質問が未解決の場合、「ワンポイント!」を参考に、
再度質問してみてください。
【ワンポイント!】
メールやFTPの設定がうまくいかない場合、
ネットオウルIDやサーバーIDなどのお客様情報を公開しない範囲で、
現在の設定内容を出来るだけ詳しく書いてみましょう。
設定内容のミスを指摘してもらえるかもしれません。
エラーが出てうまくいかない場合、
エラーメッセージの内容を書いてみましょう。
エラーメッセージにはエラー原因が詳しく書かれていることが多く、
問題の解決につながる回答が得られるかもしれません。
■ベストアンサーについて
ご質問の締め切りに際して、運営チームにて
ベストアンサーを選んでおります。
※ベストアンサーの回答者様には通常と同様のポイントが
付与されています。
--ネットオウル運営チーム-- - 投稿者:ネットオウル運営 投稿時間:2021/03/31 18:19
回答 No.10970
この回答がベストアンサーです
>テキストファイルの送受信ができること、さくらサーバーで使用していた時は
>正常にファイルの送受信ができていたことから、何かの設定違い(忘れ)で
>はないかと思いましたので
実際に、Excel VBAで作成して、
スターサーバーの有料プランで試してみたら、
エクセルファイル(xlsx)のアップロードが出来ました。
■
>テキストファイルは問題なく送受信できますが
テキストファイルは問題なく転送できてるという話なので
そのプログラムをほぼそのままで、
FtpPutFileの引数を
TRANSFER_TYPE_ASCIIをFTP_TRANSFER_TYPE_BINARYに
変更して転送してみては?
テキストファイルをバイナリー形式で転送するはずで、
これで成功したら、バイナリー転送が問題でなくて、それ以外の何か?と
いうのが判明すると思います。
たとえば、ファイル名に日本語が含まれてるとか・・
あくまで、たとえばです。
■
Debug.Print (Err.LastDllError)
などで、エラー情報を取得するとか・・。
質問者からのコメント
昨晩、ひょっとしてと思いファイル名を英数に変更してみたところ、ご指摘の通り日本語名がひかかっていました。これはFFFTPにて文字コードを「自動」に設定してアップした日本語名ファイルをダウンロードする際にエラーを起こしていました。再度Shift JISでアップしなおしたところうまくいきました。
次にアップロードのエラーに関してですが、これは完全に私の思い込みによる勘違いで、指定していたフォルダーが違っていたいためでした。お騒がせいたしましたが、有益なアドバイスをいただき何とか解決することができました。有難うございました。