Q19. 폴더에 파일 목록을 표시하는 방법?
예를 들어, 파일의 이름을 단번에 복사하고 싶을 때에 사용할 수 있습니다.
그렇다면 명령 프롬프트에서 비슷한 일을 할 수 있으며 그쪽이 더 빠르기도합니다.
매크로로 만들 경우 거기에서 더 개선할 수도 있습니다.
파일명과 동등한 폴더를 단번에 만들거나라든지, 파일명을 단번에 리네임하거나라든지.
다만, 이번 만드는 것은 어디까지나 파일을 일람 표시시키는 곳까지입니다.
■ 포인트
파일 목록을 얻으려면 Dir 함수를 사용하는 것이 일반적입니다.
buf = Dir("C:\Sample\Book1.xls")
같이 사용합니다.
일치하는 경우 일치하는 파일 이름을 반환합니다.
이 경우 Book1.xls를 반환합니다.
또한 Dir 함수에서는 와일드카드를 사용하여 파일 이름을 지정할 수 있습니다.
buf = Dir("C:\Sample*.xls")
그러면 Sample 폴더에 있는 .xls를 포함하는 모든 파일을 반환합니다.
그러나 한 번에 모든 것을 출력하는 것은 아닙니다.
두 번째 이후에는 인수없이 사용할 수 있습니다.
buf = Dir() 처럼.
이렇게 반복해서 이용함으로써, 2번째 이후의 파일명을 취득할 수 있습니다.
그리고 마지막은 빈 문자를 반환합니다.
즉, 공문자를 돌려줄 때까지 루프하면, 일치한 파일명을 모두 취득할 수 있는 것입니다.
라고, 문장으로 읽어도 지금 일단 이해하기 어렵다고 생각하므로, 꼭 회답을 보고 실제로 시험해 보세요.
■답변
Sub Q19_Answer()
Dim buf As String, cnt As Long, Path As String
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = True Then
Path = .SelectedItems(1)
End If
End With
Range("E2").Value = Path
cnt = 2
buf = Dir(Path & "\")
Do While buf <> ""
cnt = cnt + 1
Cells(cnt, 2) = buf
buf = Dir()
Loop
End Sub
■해설
이번은 전반부에서 폴더를 지정하는 다이얼로그를 출력하는 처리를 기술하고 있습니다.
그리고, 그 폴더내에 있는 파일 일람을 취득하고 있습니다.
앞에서 언급했듯이 빈 문자를 반환 할 때까지 루프를 처리합니다.
이 부분입니다.
Do While buf <>""
cnt=cnt+1
Cells(cnt, 2) = buf
buf = Dir()
루프
이제 처음 지정한 폴더에 있는 파일 목록을 검색할 수 있습니다.
실행 예는 다음과 같습니다. 먼저 바탕 화면에 새 폴더를 만들고 그 안에
텍스트 파일을 여러 개 준비했습니다.
그리고 매크로를 위의 매크로를 실행해보십시오.
그러면 이렇게 파일 목록을 얻을 수있었습니다.
Reference
이 문제에 관하여(Q19. 폴더에 파일 목록을 표시하는 방법?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/guren111/items/5296761e08511b2a61bf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)