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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Excel(エクセル) VBA 最新のフォルダ取得 1 2022/04/15 15:51
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- その他(データベース) Excel VBA 転記について 1 2022/04/20 16:55
- Visual Basic(VBA) VBA初心者です。電話番号の数字の前に0を表示させたいです。 2 2022/12/14 03:58
- Visual Basic(VBA) エクセルVBA 4 2022/05/14 00:51
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PCに保存していた写真を見られ...
-
拡張子をつくる
-
同名フォルダを作成し、そのフ...
-
「~$ファイル名.doc」というフ...
-
Excelで外部のファイルの場所を...
-
参照元Excelファイルをバックグ...
-
Excelファイルの特定のシートを...
-
MkDir パス名が無効です
-
Mac Excel VBAについて
-
Git bashが開かなくなってしま...
-
秀丸のタグジャンプがうまくで...
-
社内イントラサイトでのサイト...
-
EXCEL VBAのDir関数について
-
<a href="file:///フォルダ名/...
-
VC++アプリの設定保存について
-
ファイルの作成日時について
-
フォルダ内のファイルのインデ...
-
OpenFileDialogを使った後にも...
-
linux duコマンドで困っています。
-
クリックしたボタンによってSel...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PCに保存していた写真を見られ...
-
同名フォルダを作成し、そのフ...
-
拡張子をつくる
-
Excelで外部のファイルの場所を...
-
MkDir パス名が無効です
-
OpenFileDialogを使った後にも...
-
<a href="file:///フォルダ名/...
-
Outlookで添付ファイルの貼り付...
-
参照元Excelファイルをバックグ...
-
ExcelVBAでリンク先の対象のフ...
-
ファイルの作成日時について
-
スマホでHTMLファイルを開いて...
-
EXCEL VBAのDir関数について
-
Mac Excel VBAについて
-
VBSでメール送信
-
秀丸のタグジャンプがうまくで...
-
EPSON emqファイルをPrint CDで
-
Excelファイルにリンク→シート...
-
Excelファイルの特定のシートを...
-
OneDriveのドキュメントにある...
おすすめ情報