Picture

폴더내 모든 사진 한방에 가져오기

노만e 2025. 3. 25. 05:37

 

폴더내 모든 사진 가져오기

 

1️⃣ 엑셀에서 다량의 이미지를 빠르게 삽입

  • 수십~수백 개의 이미지를 하나씩 삽입하는 것은 매우 번거로운 작업입니다.
  • 이 코드가 있으면, 폴더를 선택하는 것만으로 한 번에 모든 이미지를 삽입할 수 있습니다.
  • 자동으로 크기 조정셀 크기에 맞게 배치하여 깔끔하게 정리됩니다.

2️⃣ 수작업보다 훨씬 빠르고 정확함

  • 기존에는 삽입 → 그림 → 파일 선택 → 크기 조정 → 정렬을 반복해야 했습니다.
  • 이 VBA 코드는 한 번 실행만으로 모든 이미지가 자동 정렬됩니다.
  • 사진 크기 옵션(1, 2, 3) 제공으로 유동적인 배치가 가능합니다.

3️⃣ 반복적인 작업을 자동화하여 업무 효율 증가

  • 수작업으로 할 경우, 실수로 이미지를 겹치거나 중복 삽입할 가능성이 있습니다.
  • VBA 코드로 자동화하면 정확한 셀 위치에, 일정한 간격으로 삽입할 수 있습니다.
  • 사용자가 마우스로 직접 셀을 선택할 수 있어 유연한 적용이 가능합니다.

4️⃣ 파일 관리가 편리해짐

  • 엑셀 파일과 이미지를 연결하여 보고서 작성, 데이터 정리 등을 쉽게 수행할 수 있습니다.
  • 예를 들어 상품 리스트, 직원 명단, 견적서 등에서 이미지가 필요한 경우 쉽게 활용할 수 있습니다.
  • 이미지를 삽입한 후에도 엑셀 내에서 쉽게 이동 및 조정할 수 있습니다.
' 폴더에서 이미지를 가져와 사용자가 선택한 셀부터 아래 방향으로 삽입하는 프로시저
Sub InsertImagesFromFolder()
    Dim folderPath As String ' 선택한 폴더 경로
    Dim imageFile As String ' 개별 이미지 파일명
    Dim imagePath As String ' 전체 이미지 파일 경로
    Dim targetCell As Range ' 사용자가 선택한 시작 셀
    Dim imageSizeOption As Integer ' 사진 크기 옵션

    ' 화면 업데이트 비활성화 (작업 속도 향상)
    Application.ScreenUpdating = False

    ' [1] 사용자에게 폴더 선택 요청
    With Application.FileDialog(msoFileDialogFolderPicker)
        .AllowMultiSelect = False
        .Title = "이미지가 저장된 폴더를 선택하세요"
        If .Show = -1 Then
            folderPath = .SelectedItems(1) & "\"
        Else
            Exit Sub ' 사용자가 폴더 선택을 취소하면 종료
        End If
    End With

    ' [2] 사진 크기 입력 요청
    imageSizeOption = Application.InputBox("사진 크기를 선택하세요:" & vbCrLf & _
                                          "1: 딱 맞게, 2: 조금 작게, 3: 더 작게", _
                                          "크기 옵션", 1)

    ' 올바른 숫자인지 확인
    If Not IsNumeric(imageSizeOption) Or imageSizeOption < 1 Or imageSizeOption > 3 Then
        MsgBox "올바른 숫자를 입력하세요 (1~3).", vbExclamation, "입력 오류"
        Exit Sub
    End If

    ' [3] 사용자가 마우스로 사진 삽입 위치(셀) 선택
    On Error Resume Next
    Set targetCell = Application.InputBox("사진을 삽입할 시작 셀을 선택하세요", "셀 선택", Type:=8)
    On Error GoTo 0

    ' 선택한 셀이 유효한지 확인
    If targetCell Is Nothing Then
        MsgBox "올바른 셀을 선택하세요.", vbExclamation, "입력 오류"
        Exit Sub
    End If

    ' [4] 폴더에서 이미지 파일 가져오기
    imageFile = Dir(folderPath & "*.*") ' 모든 파일 검색

    ' [5] 이미지 삽입 루프
    Do While imageFile <> ""
        imagePath = folderPath & imageFile ' 전체 이미지 경로

        ' 이미지 삽입
             With ActiveSheet.Shapes.AddPicture(imagePath, msoFalse, msoCTrue, 1, 1, 100, 100)
            .LockAspectRatio = msoFalse ' 가로세로 비율 조정 가능
            .Left = targetCell.Left + (imageSizeOption * 2) - 2 ' 좌표 설정
            .Top = targetCell.Top + (imageSizeOption * 2) - 2
            .Height = targetCell.Height - (imageSizeOption * 4) + 4 ' 크기 조정
            .Width = targetCell.Width - (imageSizeOption * 4) + 4
        End With

        ' 다음 행(아래쪽 셀)으로 이동
        Set targetCell = targetCell.Offset(1, 0)

        ' 다음 이미지 파일 가져오기
        imageFile = Dir
    Loop


    ' [7] 화면 업데이트 활성화
    Application.ScreenUpdating = True

    ' [8] 완료 메시지 출력
    MsgBox "이미지 삽입이 완료되었습니다.", vbInformation, "완료"
End Sub


 

 

InsertImagesFromFolder.xlsm
0.19MB