Q19. 폴더에 파일 목록을 표시하는 방법?

4112 단어 VBAExcelExcelVBA
이번에는 특정 폴더에있는 파일을 목록으로 표시하는 매크로에 대해 생각해 봅시다.
예를 들어, 파일의 이름을 단번에 복사하고 싶을 때에 사용할 수 있습니다.
그렇다면 명령 프롬프트에서 비슷한 일을 할 수 있으며 그쪽이 더 빠르기도합니다.

매크로로 만들 경우 거기에서 더 개선할 수도 있습니다.
파일명과 동등한 폴더를 단번에 만들거나라든지, 파일명을 단번에 리네임하거나라든지.

다만, 이번 만드는 것은 어디까지나 파일을 일람 표시시키는 곳까지입니다.

■ 포인트



파일 목록을 얻으려면 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()
루프

이제 처음 지정한 폴더에 있는 파일 목록을 검색할 수 있습니다.

실행 예는 다음과 같습니다. 먼저 바탕 화면에 새 폴더를 만들고 그 안에
텍스트 파일을 여러 개 준비했습니다.



그리고 매크로를 위의 매크로를 실행해보십시오.
그러면 이렇게 파일 목록을 얻을 수있었습니다.

좋은 웹페이지 즐겨찾기