![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67b6d)
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
#3続き
Option Explicit
Private FSO As Object
Private arrPath() As Variant
Private n As Integer
Sub sample()
Dim i As Integer
Dim strV As String
Dim base_path As String
' base_path= ???
n = 0
Set FSO = CreateObject("Scripting.FileSystemObject")
Call recursion(FSO.GetFolder(base_path))
strV = ""
For i = 0 To UBound(arrPath)
If UBound(Split(arrPath(i), "\")) > UBound(Split(strV, "\")) Then
strV = arrPath(i)
End If
Next
Dim strFile As String, newModified As String
Dim f As Object, d As Date
strFile = Dir(strV & "\*.csv")
Do Until strFile = ""
Set f = FSO.GetFile(strV & "\" & strFile)
If d <= f.DateLastModified Then
d = f.DateLastModified
newModified = f.Name
End If
strFile = Dir
Loop
If Not f Is Nothing Then Debug.Print (strV & "\" & newModified)
Set FSO = Nothing
End Sub
Private Sub recursion(ByVal parent_path As Object)
Dim recursion_path As Object
For Each recursion_path In parent_path.SubFolders
Call recursion(recursion_path)
Next
If parent_path.SubFolders.Count = 0 Then
ReDim Preserve arrPath(0 To n)
arrPath(n) = parent_path.Path
n = n + 1
End If
End Sub
No.3
- 回答日時:
こんばんは
最下層のフォルダーは1つですか?
VBAでやると比較的分かり難いコードになると思いますが、自身で改修してくださいね。
>最上層のファイルを指定したら
ここがアバウトなので base_path としてサンプルを書いときます。
再帰処理はよく見かけるFileSystemObjectで 最下層フォルダは¥の数を目安にしていますが、
同数の場合フォルダ内の表示順位の若い方が取得されます。
(構造がアバウトですしサンプルなので良しとしてください)
base_pathに最上層のファイルパスを代入し実行するとイミディエイトウィンドウに最下層にある最更新csvファイルフルパスが出力されるはずです
見つからない場合は出力されません
ステップ実行などで確認してください
実行プロシージャは sample です
デバッグ改修の時は適所にDebug.Printなどで列挙すれば良いと思います
(デバッグ確認3回だけ・・サンプルですのでエラーなどがある場合、処理を追加してください)
コードは次の回答欄に
No.2
- 回答日時:
こんばんは
ファイル名はどうでも良くて、CSVファイルの最新のものという意味で良いのでしょうか?
以前は、FileSearchという便利なメソッドがあって、サブフォルダ迄まとめて検索できたようですが、現在は使えなくなってしまったので、順に検索していくしかなさそうです。
「VBA サブフォルダ ファイル一覧」あたりで検索してみれば、再帰でファイル一覧を取得するようなサンプルがたくさん見つかることと思います。
一覧を作成する代わりに、CSVファイルの最新のもの(作成日なのか更新日なのか不明ですが・・)を選ぶようにすれば、比較的簡単にご質問の内容のものを作成できると思います。
ちなみに、更新日等はファイルオブジェクトのプロパティから
DateLastModified --最終更新日
DateCreated ----作成日
などで比較をすれば宜しいでしょう。
VBAではありませんけれど、手操作でも比較的簡単にできる方法をご参考までに。
エクスプローラで対象のフォルダを開いて、検索窓に「.csv」を入力して検索すると、フォルダ内のCSVファイルの一覧が表示できます。
詳細表示などにしておいて、「更新日時」の見出しをクリックすれば、昇順/降順に並び替えることができますので簡単に検索することが可能です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PCに保存していた写真を見られ...
-
拡張子をつくる
-
Excelで外部のファイルの場所を...
-
ExcelVBAでリンク先の対象のフ...
-
Excelの関数について教えてくだ...
-
EPSON emqファイルをPrint CDで
-
OpenFileDialogを使った後にも...
-
ファイルの作成日時について
-
ExcelのVBProjectがExcelを開く...
-
スマホでHTMLファイルを開いて...
-
VBSでメール送信
-
EXCEL VBAのDir関数について
-
MkDir パス名が無効です
-
ネットワークフォルダの中身を...
-
Windowsのバッチファイルでcall...
-
コピーの際、ファイルの作成日...
-
コメントの開始位置をそろえるには
-
コマンドプロンプトで印刷実行
-
Visual C++からftpを使う
-
popen使用時のエラー出力を出し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PCに保存していた写真を見られ...
-
拡張子をつくる
-
Excelで外部のファイルの場所を...
-
同名フォルダを作成し、そのフ...
-
OpenFileDialogを使った後にも...
-
ExcelVBAでリンク先の対象のフ...
-
MkDir パス名が無効です
-
参照元Excelファイルをバックグ...
-
<a href="file:///フォルダ名/...
-
ファイルの作成日時について
-
ExcelのVBProjectがExcelを開く...
-
Excelファイルの特定のシートを...
-
スマホでHTMLファイルを開いて...
-
秀丸のタグジャンプがうまくで...
-
VBSでメール送信
-
EXCEL VBAのDir関数について
-
Outlookで添付ファイルの貼り付...
-
Mac Excel VBAについて
-
「~$ファイル名.doc」というフ...
-
ファイルとフォルダのセキュリ...
おすすめ情報