◆ファイルの検索
Fileの検索には FileSearch を使います。
Sub FileSearch()
Dim i As Integer
Dim FolderSpec As String
Dim FileList As Variant
FolderSpec = FolderPath
With Application.FileSearch
.NewSearch
.LookIn = FolderSpec
.Filename = Range("A2")
.FileType = msoFileTypeAllFiles
.LastModified = msoLastModifiedAnyTime
.TextOrProperty = Range("A5")
.MatchTextExactly = True
.SearchSubFolders = True
If .Execute() > 0 Then
i = 10
For Each FileList In .FoundFiles
Range("A" & Format(i)) = FileList
i = i + 1
Next
End If
End With
End Sub
FolderPath については、Folderを選択するを参照してください。
Function FolderPath() As String
Dim Shell As Object
Set Shell = CreateObject("Shell.Application") _
.BrowseForFolder(0, "フォルダを選択してください", 0, "C:\")
If Shell Is Nothing Then
FolderPath = ""
Else
FolderPath = Shell.Items.Item.Path
End If
End Function
.Filename と .TextOrPropertyは、"こんな文字*" みたいにワイルドカードを使用できます。
.FileType と .LastModified は定数で指定します。
"2005/07/1" 〜 "2005/08/30" のような自由な設定はできないようです。
最後に .FileType と .LastModified の定数一覧を載せておきます。
example23 をダウンロードして動作を確認してください。
定数 FileType | 値 | 定数 LastModified | 値 |
msoFileTypeAllFiles | 1 | msoLastModifiedAnyTime | 7 |
msoFileTypeBinders | 6 | msoLastModifiedLastMonth | 5 |
msoFileTypeCalendarItem | 11 | msoLastModifiedLastWeek | 3 |
msoFileTypeContactItem | 12 | msoLastModifiedThisMonth | 6 |
msoFileTypeDatabases | 7 | msoLastModifiedThisWeek | 4 |
msoFileTypeDataConnectionFiles | 17 | msoLastModifiedToday | 2 |
msoFileTypeDesignerFiles | 22 | msoLastModifiedYesterday | 1 |
msoFileTypeDocumentImagingFiles | 20 |
msoFileTypeExcelWorkbooks | 4 |
msoFileTypeJournalItem | 14 |
msoFileTypeMailItem | 10 |
msoFileTypeNoteItem | 13 |
msoFileTypeOfficeFiles | 2 |
msoFileTypeOutlookItems | 9 |
msoFileTypePhotoDrawFiles | 16 |
msoFileTypePowerPointPresentations | 5 |
msoFileTypeProjectFiles | 19 |
msoFileTypePublisherFiles | 18 |
msoFileTypeTaskItem | 15 |
msoFileTypeTemplates | 8 |
msoFileTypeVisioFiles | 21 |
msoFileTypeWebPages | 23 |
msoFileTypeWordDocuments | 3 |