プロが教えるわが家の防犯対策術!

エクセル2016を使っておりますが、「2018」というフォルダの中にある全サブフォルダ中のテキストファイルを指定するコードについて伺います。

「2018」フォルダ直下にあるテキストファイルを指定するには以下のコードで良いと思うのですが、「2018」フォルダ内にある全サブフォルダ内のファイルを指定するには、どのようにコードを書けば良いでしょうか?

どなたかご教示いただけますようお願いいたします。

Const FolderPath As String = "C:\2018"
Dim Filename As String
Dim Sh0 As Worksheet, Sh As Worksheet

Set Sh0 = ActiveSheet
Filename = Dir(FolderPath & "\*.TEXT")

A 回答 (2件)

ご質問の「指定する」という意味がよくわからないのですが、具体的に何を示しているのでしょうか。


直下のファイルは要らないというなら、*親と書いてある列をコメントアウトすれば可能です。


↓アポストロフィ(シングルクォーテーション)を入れること。
' Call ShowFiles(objFolder.Files) '親*

Option Explicit
Dim objFS As Object
Dim i As Long
Sub FileSearch()
 Dim objFolder As Object
 Dim dest As String
 i = 0
 ThisWorkbook.Activate
 ActiveSheet.UsedRange.Clear
 Dim DirName: DirName = "C:\2018\" 'ユーザー設定
 Set objFS = CreateObject("Scripting.FileSystemObject")
 Set objFolder = objFS.getfolder(DirName)
 Call ShowFiles(objFolder.Files) '親*
 Call ShowFolder(objFolder)
 MsgBox "終了", vbInformation
End Sub
Sub ShowFiles(ByRef objFiles)
 Dim f
 For Each f In objFiles
 If LCase(f) Like "?*.txt" Then
  Cells(1 + i, 1).Value = f
  i = i + 1
 End If
 Next
End Sub
Sub ShowFolder(ByVal objFolder)
 Dim objSubs As Object, oSb '子
 Dim eaFiles As Object
 Set objSubs = objFolder.Subfolders
 For Each oSb In objSubs
   Set eaFiles = oSb.Files
   Call ShowFiles(eaFiles)
   Call ShowFolder(oSb)
 Next
End Sub
    • good
    • 0
この回答へのお礼

遅くなってすみせん。
ありがとうございました。

お礼日時:2018/02/14 15:21

dir関数使うなら、こんな感じ


http://officetanaka.net/excel/vba/file/file07.htm
ファイルパスを指定の場所、拡張子を.txtに変更してください。
大文字、小文字を識別しますので、混在している場合はlcaseなどで、変換して判定するひつようがあるかもしれません。

その後、何らかのファイル処理等を行うのであれば、(個人的には)FSO使うほうが楽だと思います。
http://officetanaka.net/excel/vba/filesystemobje …
    • good
    • 0
この回答へのお礼

ありがとうございます。
しかし、そのサイトは知っておりましたが、今回の質問に対する答えとしてはわかりませんでした。

お礼日時:2018/02/14 15:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!