
勉強不足で申し訳ないですが、以下の処理をExcel VBAでやるにはどうしたらいいでしょうか?
仮に「C:\aaa」をルートフォルダとします。そのルートフォルダ下には「2008年」「2009年」など年の名前を付けたフォルダだけがあり、他に余計なファイル等はありません。そして、その「2008年」など年の名前のフォルダに、雑多なファイルが入っています。大雑把に図にすると、次のような感じです。
C:\aaa
├2008年
│ ├a1.pdf
│ └a2.pdf
│
└2009年
├b5.pdf
└b6.pdf
そして、添付の図のように、A列には「2008年」などサブフォルダ名が、B列には「a1」などファイル名が出力されるようにしたいのです。なお、
(1)B列のファイル名の拡張子は、消えれば最高ですが、別に消えなくてもいいです。
(2)B列のファイル名をクリックするとファイルが開けるハイパーリンクがあると、嬉しいです。別になくてもいいです。

No.3ベストアンサー
- 回答日時:
Sub test()
Dim fso As FileSystemObject, fol As Folder, sfol As Folder, f As File
Dim ws As Worksheet
Dim rn As Range
Dim fn As String
Set fso = CreateObject("scripting.filesystemobject")
Set fol = fso.GetFolder(ThisWorkbook.Path)
Set ws = ActiveSheet
Set rn = ws.Cells(2, 1)
For Each sfol In fol.SubFolders
For Each f In sfol.Files
rn.Value = sfol.Name
fn = Left(f.Name, InStr(1, f.Name, ".") - 1)
ws.Hyperlinks.Add anchor:=rn.Offset(, 1), Address:=f.Path, TextToDisplay:=fn
Set rn = rn.Offset(1)
Next
Next
End Sub
参照設定で、Microsoft Scripting Runtimeを参照させてから実行してください。
アクティブシートのA2から、フォルダ名とファイル名・ハイパーリンク付を書き出します。
ただし、サブフォルダ内にフォルダがないことが前提です。
No.2
- 回答日時:
> どうもそのサイトでは、「サブフォルダ名を取得する」とかは分かっても、「サブフォルダの名前およびその中にあるファイル名を取得する」ことが分かりにくいのです。
サブフォルダ名を取得してそれを変数に入れておき
その変数を利用して
サブフォルダを指定したDIRを使ってファイル名一覧を取得
をサブフォルダ分ループすればできませんか?
以下のsssの部分をサブフォルダ名を取得した
配列変数にしてループさせてください。
Sub Sample20()
Dim buf As String, i As Long
Dim sss As String
sss = "D:\"
buf = Dir(sss & "*.*")
Do While buf <> ""
i = i + 1
Worksheets("Sheet1").Cells(i, 1) = sss
Worksheets("Sheet1").Cells(i, 2) = buf
buf = Dir()
Loop
End Sub
No.1
- 回答日時:
Dir関数でサブフォルダを取得する
http://officetanaka.net/excel/vba/tips/tips95.htm
ファイルの一覧を取得する
http://officetanaka.net/excel/vba/file/file07.htm
このあたりを参考にしてください。
この回答への補足
どうもそのサイトでは、「サブフォルダ名を取得する」とかは分かっても、「サブフォルダの名前およびその中にあるファイル名を取得する」ことが分かりにくいのです。なお、VBAを行うExcelファイルは、例で言う「C:\aaa」フォルダにおいて、フォルダの相対参照を利用したディレクトリ参照にしたいと思っています。
補足日時:2010/01/07 22:55えっと、補足に書いた
> VBAを行うExcelファイルは、例で言う「C:\aaa」フォルダにおいて
っていう文の「おいて」っていうのは、「保存して」という意味です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ファイル一覧表を使ったファイルの移動 5 2022/08/10 15:37
- Excel(エクセル) 【VBA】フォルダAにある2つのファイルの内1つを、フォルダBへ。もう1つを、フォルダBへ移動したい 6 2022/07/26 08:51
- Excel(エクセル) フォルダ内のエクセルファイルを開かずにデータ採取する関数式 2 2022/12/22 22:15
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Excel(エクセル) 【VBA】PDF出力に任意のファイル名前を付ける方法 3 2023/07/21 10:55
- PDF エクセルのVBAでファイルをpdfで保存するとソフトによっては開けなくなる 3 2022/06/08 10:20
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/07/01 12:54
- Excel(エクセル) Excel VBA 3 2023/04/22 10:46
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
(C#)フォルダを指定するダイ...
-
VBA 最新のフォルダ取得
-
Windows10でコマンドプロンプト...
-
Excelで指定したフォルダに保存...
-
フォルダの検索2
-
VBA フォルダの複数選択ができない
-
VBプロジェクトでのフォルダ構...
-
ファイル名と同名のフォルダを...
-
VBA フォルダ名に特定の文字を...
-
VB.NETでツリービューにフォル...
-
カレントフォルダって?
-
VBAで行うフォルダ・ファイル検...
-
ファイル名に特定の文字列を含...
-
windowsでテキストファイルの各...
-
エクセルマクロでデータの比較
-
フォルダを開く
-
デスクトップの画像をhtmlに表...
-
exeと同じ階層にフォルダを配置...
-
会社のネットワーク上のファイ...
-
Excel VBA:ダイアログを使って...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
会社のネットワーク上のファイ...
-
パス名に2バイト文字(マルチバ...
-
デスクトップの画像をhtmlに表...
-
【マクロ】ファイル名の日付に...
-
C ファイル出力で、フォルダが...
-
ファイル名と同名のフォルダを...
-
Excelのハイパーリンクについて...
-
VBA 最新のフォルダ取得
-
Excelで指定したフォルダに保存...
-
VBAでファイル名を指定して保存...
-
Access VBA で フォルダ権限...
-
サーバ内のフォルダ名と各フォ...
-
excelマクロ 冒頭3文字が一致す...
-
VBA フォルダ名に特定の文字を...
-
カレントフォルダって?
-
Excel VBA マクロ フォルダ名を...
-
VBA フォルダの複数選択ができない
-
ExcelVBAでフォルダへのハイパ...
-
ExcelのVBAでフォルダ指定がで...
おすすめ情報