[[20220118130044]] 『不要なフォルダーの削除について』(hita) ページの最後に飛ぶ

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

 

『不要なフォルダーの削除について』(hita)

サーバー上に「データ」という名前のフォルダーがあり、フォルダー内には日付(例0101)の名前のフォルダーと、その日に処理を行う圧縮ファイルがあります。圧縮ファイルの処理が終了したら、日付が名前のフォルダーを作成し、その中に圧縮ファイルを移動し一定期間保存しています。

圧縮ファイルの解凍からデーター集計まで、集計用のエクセルファイルを作成しマクロで作業しています。マクロで日付の名前のフォルダーを作成し、圧縮ファイルの移動もしています。その際、可能であれば古い日付のフォルダを削除できれば思っています。

データという名前のフォルダー内には、10個程のフォルダーしか保存しないようにと言われている為、古いフォルダーを毎日1個削除しています。
手動でできる作業ではありますが、新しいフォルダをマクロで作成できるようにしたので、一緒に古いのが削除できたら?と思いました。

今回、教えて頂きたいのは「データ」フォルダ内の日付が一番古いフォルダーを削除するマクロです。

説明が分かりづらく大変申し訳ございません。
どうぞ、よろしくお願いいたします。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


「データ」という名前のフォルダーがあり、フォルダー内には日付(例0101)

日付4ケタですか?
0101 というフォルダと 1231 というフォルダはどっちが古いと判断するんでしょう?
年をまたぐときの処理はどうしようと考えてますか?
(え) 2022/01/18(火) 13:53


(え)様
ありがとうございます。

いつも手動で削除していたので、うっかりしてました。
4桁なんですよね。
手動でした方がよさそうですね。
お手数おかけしました。
(hita) 2022/01/18(火) 14:00


 FileSystemObjectのDateCreatedプロパティで、フォルダの作成日時が取得出来ます。
 同時に複数のフォルダをコピーして作成する事が無ければ(マクロで1個ずつ作成しているのであれば)
 作成日の古いフォルダを特定することは可能ではあります。

 Sub sample()
    Dim fso As Object, fld As Object
    Dim buf As Date, fn As String
    Set fso = CreateObject("Scripting.FileSystemObject")
    buf = Now
    For Each fld In fso.GetFolder("\\サーバ\データ").SubFolders
        Debug.Print fld.DateCreated & ":" & fld.Name
        If buf > fld.DateCreated Then
            buf = fld.DateCreated
            fn = fld.Name
        End If
    Next fld
    MsgBox "作成日最古:" & fn
 End Sub
(qwerty) 2022/01/18(火) 21:37

コメント返信:

[ 一覧(最新更新順) ]


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