
vba初心者です。
フォルダの中に複数のサブフォルダがあり、その各サブフォルダ内のファイルのパスをリスト化したいです。
サブフォルダごとに行を分けて、それぞれの行のB,C,D,E......列に順にファイルパスを〇〇元データというブックに表示させたいのですが、全サブフォルダの全ファイルのパスが全て同じ行のB,C,D,E,,,,,列に表示されるところまでしかわかりません。
色々調べてみたのですがどうしても解決できず困っています。よろしくお願いいたします。
今:
2行目に サブフォルダ1のファイルパス1、サブフォルダ1のファイルパス2、サブフォルダ2のファイルパス1、サブフォルダ2のファイルパス2
目指す形:
2行目に サブフォルダ1のファイルパス1、サブフォルダ1のファイルパス2
3行目に サブフォルダ2のファイルパス1、サブフォルダ2のファイルパス2
No.1ベストアンサー
- 回答日時:
こんにちは
ご質問文に疑問点が多すぎるのですが・・・
>vba初心者です。
アプリケーションが不明ですけれど、
>それぞれの行のB,C,D,E......列に~
とあるので、エクセルってことと推測しました。
>サブフォルダごとに行を分けて、それぞれの行の
>B,C,D,E......列に順にファイルパスを~
パス(=フルパス)だとするなら、前半は同じものが並ぶだけだし、かつ列に並べる形式だとまともに表示させようとすると、横にメッチャ長くなって見にくくてしかたがないのではと想像してしまいます。
また、ご質問文の方式だと、リスト化するのは1階層下のフォルダまで限定という意味でしょうか?
サブフォルダ内ではなく、元フォルダ直下のファイルは無視ってことなのでしょうかね・・・
さらには、孫フォルダがあっても、それは無視ということなのかなぁ?
あるいは、孫フォルダまでは(ファイルと同じ扱いで)パスを列に記入して、それ以下の階層のファイルは無視ってことなのかなぁ・・・
>色々調べてみたのですがどうしても解決できず困っています
まぁ、内容や結果は別にして、方法がわかれば良いものと考えました。
以下は、内容的にはご質問文そのままとして、作成してみた一例です。
・元フォルダのサブフォルダのみを対象とする
(元フォルダ直下のファイルは無視)
・サブフォルダ直下のファイルのパスを、1行内に(列を変えて)順に転記
(サブフォルダ下のフォルダ以降は無視)
・サブフォルダ毎に1行を使用するものとする
と解釈しました。
※ 上の疑問で記したように、見にくい結果になりますけれど、方法がわかれば良いものと考えました。
考え方の一例なので、実際の目的の内容に合わせて応用なされば宜しいでしょう。
※ 方法のみなので、元フォルダの指定、出力対象シート等は固定にしてあります。
(出力シートはアクティブシートにしてあります)
以下、ご参考までに。
Sub Q_13227758()
Dim fs, folder, file
Dim sh As Worksheet, rg As Range
Const fso = "Scripting.FileSystemObject"
Const fPath = "C:\Users\USERNAME\hoge" '←調査対象フォルダパス
Set sh = ActiveSheet '←出力対象シート
sh.Cells.ClearContents
Set rg = sh.Cells(2, 1)
Set fs = CreateObject(fso)
If Not fs.folderExists(fPath) Then Exit Sub
For Each folder In fs.getfolder(fPath).subFolders
For Each file In folder.Files
rg.Value = file.Path
Set rg = rg.Offset(, 1)
Next file
Set rg = sh.Cells(rg.Row + 1, 1)
Next folder
End Sub
お礼が大変遅くなりた申し訳ありません。
教えていただいた通り試したところ、思っていた通りに動きました。
本当に助かりました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/10/26 17:14
- Excel(エクセル) フォルダ内のエクセルファイルを開かずにデータ採取する関数式 2 2022/12/22 22:15
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Windows 10 コマンドプロンプトの使い方 1 2022/10/13 14:43
- Visual Basic(VBA) エクセルのマクロについて教えてください 物件ごとのフォルダを作成してます そのフォルダ内にサブフォル 2 2023/07/02 17:58
- Excel(エクセル) 【VBA】フォルダAにある2つのファイルの内1つを、フォルダBへ。もう1つを、フォルダBへ移動したい 6 2022/07/26 08:51
- Excel(エクセル) フォルダAから1つのファイルだけを、フォルダBへを移動するVBAについて 2 2022/07/25 11:45
- Android VBA、フォルダのパスに環境文字 ㉑ があり、VBAが機能しません。 2 2022/07/27 09:16
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ISOファイルとMDSファイル
-
エクセルの循環参照、?
-
エクセルでのアクセス履歴をと...
-
拡張子exeのファイルの開き方を...
-
エクセルでファイル名が毎回違...
-
VBAをいじって保存したら拡張子...
-
ccdファイルはどのようにして使...
-
ドキュメントに保存していたエ...
-
あるエクセルファイル。なんの...
-
エクセル2016で、エクセル97-20...
-
イーファンビューでwebpファイ...
-
2つめのExcelファイルを開くと...
-
複数Excelファイルを開いた際の...
-
PowerPointに埋め込まれたサウ...
-
【至急】暗号化されたエクセル...
-
ロータス123で作成の文書をエク...
-
セキュリティ解除方法を教えて...
-
イラストレーター10を使ってい...
-
Excelファイル編集中にフリーズ...
-
OpenOfficeで過去に作成したフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの循環参照、?
-
ISOファイルとMDSファイル
-
ccdファイルはどのようにして使...
-
USBメモリー上の MP4 ファイル...
-
イーファンビューでwebpファイ...
-
エクセルでのアクセス履歴をと...
-
あるエクセルファイル。なんの...
-
2つめのExcelファイルを開くと...
-
複数Excelファイルを開いた際の...
-
エクセルでファイル名が毎回違...
-
[Googleスプレッドシート]エク...
-
変えてしまったファイル形式を...
-
InDesignファイルをPhotoshopか...
-
拡張子exeのファイルの開き方を...
-
【至急】暗号化されたエクセル...
-
非サポートファイルとは…???
-
VBAをいじって保存したら拡張子...
-
エクセルでリンクが更新されない
-
エクセル2016で、エクセル97-20...
-
WORDファイルをIllustratorに変...
おすすめ情報