
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