지정된 폴더에서 특정 항목을 검색하고 나열하는 VBA

2066 단어 VBAExcelVBA
파일 목록화가 번거롭기 때문에 만든 VBA 메모용 기사

Excel 파일을 열면 다음 화면이 표시됩니다.

우선, 원하는 아이템이 들어 있는 폴더의 풀 패스를 Shift+오른쪽 클릭으로 취득해, 폴더의 란에 복사합니다. 폴더가 비어 있으면이 엑셀이 저장된 폴더가 기본 경로가됩니다.
그런 다음 파일 검색 조건에 원하는 항목의 파일 이름 키워드를 넣습니다. 확장자로 검색하면
「txt」나 「.txt」, 키워드로 검색한다면 「(키워드)」나 「(키워드)」등.
예로서

와 같이 txt를 나열하고 싶다면 파일 검색 조건 필드에 '.txt'를 입력하십시오.

파일 목록 작성을 클릭하면

얻어집니다.

아래 VBA 소스 코드 메모

이 VBA는 3개의 서브 프로시저로 구성되지만, 특별히 분리할 의미는 없기 때문에 클래스 오브젝트의 시트 1에 기입한 것으로 한다.

일단 객체의 정의가 번거롭기 때문에,
Dim twb(5) As Object
Sub ob()'シートオブジェクトの略称を定義
For i = 1 To Worksheets.Count
Set twb(i) = ThisWorkbook.Worksheets(i).Cells
Next
'オブジェクトの略称を定義
End Sub
로 약칭의 정의를 해 둔다. 용도에 따라 시트까지도 좋다.

Sub dataexp() 'ファイルリストを作成
Dim pt, fkw, fnm, fpt As String
Call ob
'シートオブジェクトの略称を呼び出す
pt = twb(1).Cells(3, 3)
If Len(pt) < 1 Then
pt = ThisWorkbook.Path
End If
'フォルダパスの定義。未定義の場合はこのエクセルファイルの格納フォルダがデフォルトパスとなる
fkw = Dir(pt & "\" & Cells(3, 1))
i = 1
Do While fkw <> ""
twb(1).Cells(5 + i, 3) = fkw
fkw = Dir()
i=i+1
Loop
'条件を満たすファイルのパスを取得する
End Sub

Sub dataexp2() 'ファイルリストをリセット
Call ob
twb(1).Range("C6").CurrentRegion.ClearContents
End Sub

좋은 웹페이지 즐겨찾기