[[20180520111326]] 『ファイル日時を取得したい。』(KUKI) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ファイル日時を取得したい。』(KUKI)

 FTPサーバーにアップされているファイルを検索して目的のファイルを自分のPCに落とすという動作をAPI関数を使って行ってまして、
 FTPサーバーの指定したフォルダ内のすべてのファイルをリストボックスに表示して,そこから目的のファイルを選択してダウンロード
 するという感じにしているのですが、サーバー内の、あるひとつのフォルダのファイル数がかなり多くなってきていて、
 目的のファイルを探すのに時間がかかってしまいます。
 サーバー内のファイルはこちらからは削除ができないようになっています。

 そこで、日時を指定してそれ以降にアップされたものしか抽出しないようにしたいのですが、
 FTPサーバーにあるファイルの作成日時を取得する方法がわかりません。
 ご存じの方がいらっしゃいましたらご教示いただけますでしょうか。
 よろしくお願いいたします。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 参考
http://www.moug.net/tech/exvba/0130015.html

 リンクだけだとなんなので。
 (リンク先も読んでください。参照設定が必要)

 Sub Sample()
    Dim FSO As FileSystemObject
    Set FSO = New Scripting.FileSystemObject

 '↓これ適当なので、拡張子のとこかなりいい加減。
 OFile = Application.GetOpenFilename("Excelファイル (*.xlsx), *.xlsx", , "タイトル")

    With FSO.GetFile(OFile)
            MsgBox .DateCreated & vbCrLf & _
                    .DateLastModified
    End With
 End Sub
(BJ) 2018/05/21(月) 02:58

一旦、ftp接続後にファイル一覧を得て、そこに表示される情報から必要なファイルを判定。 個々のファイル名を取得すれば良いと思いますよ。 VBAから直接FTP操作するのは面倒なので、コマンドプロンプト上のftpコマンドを使ってファイル名と日付情報を得る例なぞ。

事前にftpコマンドをテキスト化し、ブックと同じフォルダに置いておく。(例:test.scr)

open 接続先名またはIPアドレス
ログイン名
パスワード
ls -lt
quit

以下は、マクロのコード。

 Sub test()
    Dim vList As Variant
    Dim cPath As String
    Dim i As Long

    cPath = ThisWorkbook.Path & "\"

    vList = Split(CreateObject("WScript.Shell").Exec("CMD /C FTP -s:""" & cPath & "test.scr""").StdOut().ReadAll(), vbNewLine)
    For i = 1 To UBound(vList) - 1
        If vList(i) = "" Then
            Exit For
        End If
        Cells(i, "A").Value = Mid(vList(i), 57)
        Cells(i, "B").Value = CDate(Mid(vList(i), 44, 12))
    Next i
 End Sub
(???) 2018/05/21(月) 09:00

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.