[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『2階層下のフォルダ内にあるエクセルシートを取り出したい』(ねこ)
VBA初心者です。
大量にあるフォルダ内に格納されているエクセルシートを
どこか1つのフォルダにまとめて取り出したくVBA活用を検討しています。
ワードを変えていろいろ検索してみるものの
同階層のフォルダや1階層下のフォルダのデータ抽出方法についての
コードを確認することはできるのですが
2階層下のファイルを抽出するコードを検索することができず
ご質問しました次第です。
【まとめ】というフォルダにフォルダが約200個
そのフォルダ内に2〜3個のフォルダがありそれぞれにエクセルシートが複数個入っている状況です。
よろしくお願いいたします。
< 使用 Excel:Office365、使用 OS:Windows10 >
file system object を使ってみては? http://officetanaka.net/excel/vba/filesystemobject/ http://officetanaka.net/excel/vba/filesystemobject/folder14.htm
Sub test51() Dim FSO As Object Dim fld1 As Object Dim fld2 As Object Dim f As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
For Each fld1 In FSO.GetFolder("D:\AAA\BBB").SubFolders '適宜変更のこと For Each fld2 In fld1.SubFolders For Each f In fld2.Files Debug.Print f.Name; Tab(20); f.Path '作業例 Next Next Next Set FSO = Nothing End Sub (γ) 2020/11/11(水) 10:45
EXCEL の学校ですが、PowerShell であれば、PowerShell ウィンドウを開いて >Get-ChildItem "D:\AAA\BBB\*\*.xls*" だけで取得できます。
ファイル名だけ表示したい場合は >Get-ChildItem "D:\AAA\BBB\*\*.xls*" | Select Name
古パスで表示したい場合は >Get-ChildItem "D:\AAA\BBB\*\*.xls*" | Select FullName
で。 結果をファイルに出力したい場合は >Get-ChildItem "D:\AAA\BBB\*\*.xls*" | Select FullName | Out-File "D:\ExcelList.txt" でも。
(QS) 2020/11/11(水) 10:55
>大量にあるフォルダ内に格納されているエクセルシートを 作業内容自体をよく読んでいなかったが、 まず、シートはブックの要素です。 書くなら、格納されているエクセルブックを、でしょうか。
(1)Excelファイルだけに限定する必要がある場合 ファイルのパス名から拡張子だけを取り出すには、 GetExtensionNameを使います。それで判定可能なはず。 http://officetanaka.net/excel/vba/filesystemobject/filesystemobject16.htm
(2) どこかひとつのフォルダにファイルをコピーしたいのですか? それなら、 http://officetanaka.net/excel/vba/filesystemobject/file13.htm を参考に、特定フォルダにコピーできます。
(γ) 2020/11/11(水) 11:11
あっ、まったく質問読んでませんでした。 先の回答は無視してください。 (QS) 2020/11/11(水) 11:28
QSさん
ご返信ありがとうございます。
いえ、私のお伝えの仕方が悪かったと思います、すみません。。
(ねこ) 2020/11/11(水) 11:51
コピーであれば、ファイル名の重複がない前提で
>Copy-Item D:\A\*\*.xls* -Destination D:\B\ でもできます。
\*\ と間に挟むことで、二階層下のフォルダを意味します。 でもまぁ、まったく EXCEL と関係ない回答ですみません。 (QS) 2020/11/11(水) 13:00
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.