サンプルでは特定のフォルダ内にあるテキストファイルをFileSearch
オブジェクトを使用して検索、フルパスからファイル名を取得、Line
Inputステートメントで一行目の内容を取得、FileDateTime関数で最終
更新日を取得しています。
Sub GetTextInformation()
Dim Msg As String, FolderName As String
Dim Ret As String, Buff As String
Dim FNum As Integer, i As Long
Msg = "検索するフォルダのパスを指定してください"
FolderName = Application.InputBox _
(Msg, "テキスト情報取得", "C:\", Type:=2)
'InputBoxがキャンセル、空白で返された場合のエラー処理
If FolderName = "" Or FolderName = "False" Then _
GoTo Exit_GetTextInformation
'指定フォルダの存在確認
Ret = Dir(FolderName, vbDirectory)
If Ret = "" Then GoTo Exit_GetTextInformation
'ファイル検索
With Application.FileSearch
.NewSearch
.Filename = "*.txt" '”ABC*.txt"なども可能
.FileType = msoFileTypeAllFiles
.LookIn = FolderName '指定フォルダ
.SearchSubFolders = False
.Execute '検索実行
'検索結果が0の場合終了
If .FoundFiles.Count = 0 Then GoTo Exit_GetTextInformation
FNum = FreeFile 'ファイル番号確保
For i = 1 To .FoundFiles.Count
'テキストファイルから一行目を取得
Open .FoundFiles(i) For Input As FNum
Line Input #FNum, Buff
Close FNum
'テキストファイルの情報をセルに書き込み
Cells(i, 1) = Dir(.FoundFiles(i), vbNormal) 'ファイル名取得
Cells(i, 2) = FileDateTime(.FoundFiles(i)) 'ファイル更新日
Cells(i, 3) = Buff 'テキスト一行目
Next i
End With
Exit Sub
Exit_GetTextInformation:
MsgBox "検索できませんでした"
End Sub
|