<VBAでFTP.EXEを使い、ファイルをアップロードしてみる>
どうも、三流プログラマーのKen3です。 今回は、 コマンドプロンプトのFTPを使用して、 ファイルをアップロードしてみたいと思います。 関連項目、 VBAでFTP.EXEを使う http://www.ken3.org/cgi-bin/group/vba_ftp.asp もヨロシクね。/* * 1.今回のキッカケ */
VBA系の掲示板 http://www.ken3.org/cgi-bin/bbs/vba/wforum.cgi に来た質問です。 ---- >エクセルVBAから、ファイルを自動でFTPしたいのですが、自分なりには >相当しらべてみたのですが、現時点での私の能力では・・・限界にきています。 >しかし、現在作りかけている子供用問題集において、自分の成績をWEBにアッ >プするために、どうしてもその機能がほしいのです。 >過去ログを読むことも、検索も、自分なりにがんばったのですが・・・どうかそ >の部分のプログラムを教えてください。 ---- と もらった質問にいつものように、質問に質問で返し(オイオイ) ※出来るだけ、質問に質問で返さないように心がけてるんだけど・・・ ---- こんな質問返しをしてみたり --- やりたいこと、仕様は ExcelのVBAで、 aaa.txt(ファイルは1つ?) を FTPで(FTP.EXE?それともフリーのDLL?)、 指定したディレクトリにUPする でいいのかなぁ? 私も詳しくないのですが、 WebにUPする、リアルタイム性が無いなら、 メールアドレスを1つ作って(成績回収用に専用で1つ) 回収するのが楽そうな気もするし、 FTPにこだわらないで、 WebにデータをPOSTして、回収するとか。 なんて代案もあるけど、 FTPで送信、少し、私も探ってみますね。 ---- ヤバイ・ヤバイ、、、掲示板のお偉い人達みたいに、 コッチのほうがいいよと質問者のやりたいことを否定して、 自分の好きな方法を強引に進めようとしてしまった・・・(少し反省) FTP.EXEの使用方法、まとめも兼ねて、作ってみますか。/* * 2.処理の構想を考える */
Set objFTP = CreateObject("FTP.application") なんて感じの、スマートな方法、あればいいのですが、 チョット見つからなかったので、 パラメータファイルにFTPのコマンドを書き、 ftp.exe で実行、そんな感じの処理を作成してみたいと思います。 -- 参考バックナンバー -- No.25 コマンドラインのFTPを使ってみた http://www.ken3.org/backno/backno_vba06.html#25 'shellでFTPを起動 Shell "ftp -s:" & strPNAME と、Shellでftp.exeを起動して、-s のコマンドを実行させる、そんな構想でした。 No.26 FTP -n オプションとuserコマンド</A></h3> http://www.ken3.org/backno/backno_vba06.html#26 In message "-n と user 使えよバカ", s***@********.ne.jpさん wrote... >ここ見ろ-->http://www.zdnet.co.jp/help/tips/linux/l0462.html >-n と user 使えよバカ --- ftp -n とやると、ログインを聞いてこないので、 user ユーザ名 パスワード でログイン出来るんですね。/* * 3.昔の復習を兼ねて、-n -sオプション */
http://www.ken3.org/backno/backno_vba06.html#26 で、作成したのが、下記のサンプルです。
| Sub test()
    Dim strPNAME As String   'パラメーターファイル名
    Dim nFNO     As Integer  'ファイル番号
    strPNAME = ThisWorkbook.Path & "\ftptest.txt" 'ファイル名作成
    nFNO = FreeFile  '空いてるファイル番号を取る
    Open strPNAME For Output As #nFNO 'ファイルを新規作成
    'データ書き込み
    Print #nFNO, "open plaza14.mbn.or.jp" 'openホスト名
    Print #nFNO, "user ken3 XXXXXX←パス" 'userコマンド ユーザー名 パスワード
    Print #nFNO, "cd www"
    Print #nFNO, "pwd"
    Print #nFNO, "get index.html " & ThisWorkbook.Path & "\index.html"
    Close #nFNO  '開いたら閉じようね
    
    'shellでFTPを起動 -nのオプションを付ける
    Shell "ftp -n -s:" & strPNAME
End Sub | 
| Sub ftp_upfile(strHNAME As String, _
               strUSERNAME As String, _
               strPASS As String, _
               strDIR As String, _
               strUPFILE As String)
End Sub | 
| Sub TEST()
    Dim strFILENAME As String  'ファイル名受け取り用
    'ファイル名を選択する
    strFILENAME = Application.GetOpenFilename
    'プログラムの中にパスワード埋め込むのよくないけど
    '作った関数をコールする
    Call ftp_upfile("ftp.xxxx.jp", "username", "pass", "data/pc/", strFILENAME)
End Sub | 
| Sub ftp_upfile(strHNAME As String, _
               strUSERNAME As String, _
               strPASS As String, _
               strDIR As String, _
               strUPFILE As String)
    Dim strPNAME As String   'パラメーターファイル名
    Dim nFNO     As Integer  'ファイル番号
    'パラメータファイル名をブック位置\ftppara.datとする
    strPNAME = ThisWorkbook.Path & "\ftppara.dat" 'ファイル名作成
    
    'ファイルを新規作成する
    nFNO = FreeFile  '空いてるファイル番号を取る
    Open strPNAME For Output As #nFNO 'ファイルを新規作成
    'コマンドデータを書き込む
    Print #nFNO, "open " & strHNAME  'open ホスト名
    Print #nFNO, "user " & strUSERNAME & " " & strPASS 'user ユーザー名 パスワード
    Print #nFNO, "cd " & strDIR      'cd xxxx 書き込みディレクトリへ移動
    Print #nFNO, "put " & strUPFILE  'put ファイル名 で、ファイルをアップする
    Print #nFNO, "quit"              'bay で コマンド終了
    'ファイルを閉じる(作成が終了したので)
    Close #nFNO  '開いたら閉じようね
    
    'shellでFTPを起動 -n,-s:ファイル名 のオプションを付ける
    Shell "ftp -n -s:" & strPNAME
End Sub | 
ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、
| 気になったジャンル↓を選択してください。 人気記事(来場者が多いTOP3): Excel関係: Access関係: その他:VBAの共通関数やテキストファイルの操作など 開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う] 仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力] ※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。 | 
Blogとリンク:[三流君の作業日記]/
[VBAやASPのサンプルコード]/
広告-[通販人気商品の足跡]