본문 바로가기

엑셀VBA/VBA 기본

엑셀 VBA -폴더 내 파일 열기

VBA 정리

VBA 폴더 내 파일 열기


엑셀 VBA 에서 폴더 내 파일을 여는 방법 중 하나인 FileDialog 를 이용한 방법을 알아보기로 한다

 

- 폴더 내 파일 선택 후 열기

Sub 폴더내파일열기()

Dim i As Integer                                        '순환문 지정 변수
Dim strPath As String                                   '지정위치

With Application.FileDialog(msoFileDialogFilePicker)   '폴더선택 창에서
        .AllowMultiSelect = True
        .Show                                          '폴더 선택창 띄우기
        
        If .SelectedItems.Count = 0 Then Exit Sub      '취소 선택 시 '매크로 중단  
        
        For i = 1 To .SelectedItems.Count               '선택한 파일갯수만큼 진행            
            strPath = .SelectedItems(i)                 '선택한 파일경로 지정
            Workbooks.Open (strPath)                    '파일 열기
            '===========================
            '작업
            '===========================
            Workbooks.Close                             '파일 닫기            
        Next i
        
    End With
    
End Sub

FileDialog 를 이용하면 손쉽게 폴더 내 엑셀 파일들을 열어 작업을 할 수 있다

다음으로는 폴더안에 있는 모든 파일을 여는 방법을 보자

 

- 폴더 내 모든 파일 열기

Sub 폴더내모든파일()
    
    Dim strPath As String                            '폴더의 경로를 넣을 변수
    Dim fileName As String                           '각 파일 이름을 넣을 변수
   
    Application.ScreenUpdating = False               '화면 업데이트 (일시) 정지    
   
    With Application.FileDialog(msoFileDialogFolderPicker)  '폴더선택 창에서
        .Show                                        '폴더 선택창 띄우기
 
        If .SelectedItems.Count = 0 Then             '취소 선택 시
            Exit Sub                                 '매크로 중단
        Else
            strPath = .SelectedItems(1) & "\"        '폴더 경로를 변수에 넣음
        End If
    End With

    fileName = Dir(strPath & "*.xls*")               '(폴더내)각 엑셀파일 이름을 변수에 넣음
 
    If fileName = "" Then                            '폴더에 파일이 없으면
        MsgBox "폴더에 파일이 없습니다."               '메시지 출력
        Exit Sub                                     '매크로 중단
    End If
           
    Do While fileName <> ""                          '이름이 없지 않다면, 즉, 파일이 존재하면
        Workbooks.Open (strPath & fileName)          '각 파일을 열기
        '===============================
            '작업
        '===============================
               
        ActiveWorkbook.Close False                   '각 파일을 저장하지 않고 닫음
       
        fileName = Dir                               '다음 파일을 파일이름에 넣음
    Loop                                             '무한 반복

End Sub