이 매크로는 엑셀에서 셀에 입력된 파일명을 기준으로 해당하는 이미지 파일을 자동으로 삽입하는 기능을 수행합니다.
이를 통해 반복적인 수작업을 줄이고, 데이터 정리를 자동화할 수 있습니다.
1. 대량의 이미지 자동 삽입
✅ 기존 방식 문제점:
- 수십 개, 수백 개의 이미지를 엑셀에 하나씩 삽입하려면 많은 시간이 소요됨
- 수동 조정 시 이미지 크기나 위치가 일정하지 않아 정렬이 어렵고 비효율적임
✅ 이 코드가 해결하는 점:
- 셀에 입력된 파일명을 기준으로 엑셀에서 자동으로 이미지를 불러와 배치
- 사용자가 일일이 삽입할 필요 없이 몇 초 만에 자동 정렬
📌 활용 예시:
- 상품 관리 (상품코드를 입력하면 해당 상품 이미지 자동 삽입)
- 인사 관리 (사원 ID를 입력하면 직원 사진 자동 삽입)
- 문서 자동화 (리스트만 정리하면 자동으로 관련 이미지 추가)
2. 파일명 기반 자동 매칭 (확장자 자동 인식)
✅ 기존 방식 문제점:
- 같은 파일이 .jpg, .jpeg, .png 등 다양한 확장자로 저장될 수 있음
- 사용자가 일일이 확인해야 해서 비효율적
✅ 이 코드가 해결하는 점:
- .jpg, .jpeg, .png 자동으로 탐색하여 존재하는 파일만 삽입
- 확장자를 하나하나 입력할 필요 없이 자동으로 올바른 파일 찾기
📌 활용 예시:
- 제품 리스트가 있고, 제품 이미지가 jpg나 png로 되어 있는 경우 자동으로 올바른 파일 삽입
- 학생 사진 관리에서 .jpeg와 .png가 섞여 있어도 별도 수정 없이 자동 매칭
3. 병합된 셀도 자동 인식
✅ 기존 방식 문제점:
- 엑셀에서 병합된 셀에 이미지를 넣을 때 정확한 위치 조정이 어렵고, 수동 정렬이 필요함
✅ 이 코드가 해결하는 점:
- 병합된 셀을 자동으로 감지하여 해당 영역에 이미지 삽입
- 병합된 셀의 중앙에 배치하도록 조정하여 깔끔한 정렬 가능
📌 활용 예시:
- 직원 프로필 사진을 넣을 때 이름이 있는 병합된 셀에 자동 배치
- 제품 카탈로그에서 제품명이 병합된 셀에 있을 때 자동 정렬
4. 이미지 크기 조정 옵션 제공 (맞춤 설정)
✅ 기존 방식 문제점:
- 수동으로 이미지를 조정하면 크기 비율이 일정하지 않음
- 동일한 크기로 정렬하려면 많은 시간이 소요됨
✅ 이 코드가 해결하는 점:
- 1~3 크기 옵션을 제공하여 사용자가 적절한 크기를 직접 선택 가능
- 엑셀 셀 크기에 맞춰 자동 조정되어 깔끔한 레이아웃 유지
📌 활용 예시:
- 작은 아이콘을 삽입할 때는 작게, 제품 상세 이미지를 삽입할 때는 크게
- PPT, 보고서용 엑셀 파일을 만들 때 자동 정렬
Sub InsertImagesFromCellNames() Dim targetRange As Range, cell As Range Dim imageFolderPath As String, imageFileName As String, imageFullPath As String Dim insertedImage As Shape Dim imageSizeOption As Integer Dim fileExtension Dim pic_Left As Single, pic_Top As Single, pic_Width As Single, pic_Height As Single ' 사용자가 이미지 이름이 입력된 범위를 선택하도록 유도 On Error Resume Next Set targetRange = Application.InputBox("사진 이름이 입력된 범위를 선택하세요", "이름 범위", Type:=8) On Error GoTo 0 If targetRange Is Nothing Then Exit Sub ' 이미지 크기 옵션 입력 받기 Do imageSizeOption = InputBox("사진의 크기를 선택하세요:" & vbCrLf & "1: 딱 맞게, 2: 조금 작게, 3: 더 작게", "크기 옵션", Default:=1) If imageSizeOption < 1 Or imageSizeOption > 3 Then MsgBox "올바른 옵션(1~3)만 선택하세요.", vbExclamation Else Exit Do End If Loop ' 사용자가 이미지 폴더를 선택하도록 유도 With Application.FileDialog(msoFileDialogFolderPicker) .Title = "사진이 저장된 폴더를 선택하세요" .AllowMultiSelect = False If .Show = 0 Then Exit Sub ' 취소 시 종료 imageFolderPath = .SelectedItems(1) & "\" End With ' 선택한 범위에서 각 셀을 순회하며 이미지 삽입 For Each cell In targetRange imageFileName = Trim(cell.Value) ' 셀 값에서 이미지 파일명 추출 If imageFileName = "" Then GoTo NextCell ' 빈 셀 건너뛰기 ' 지원하는 확장자 리스트 (jpg, jpeg, png) For Each fileExtension In Array(".jpg", ".jpeg", ".png") imageFullPath = imageFolderPath & imageFileName & fileExtension If Dir(imageFullPath) <> "" Then Exit For imageFullPath = "" Next fileExtension ' 이미지 파일이 존재하지 않으면 메시지를 출력하고 다음 셀로 이동 If imageFullPath = "" Then MsgBox "폴더에 해당 이름의 이미지 파일이 없습니다: " & imageFileName, vbExclamation GoTo NextCell End If ' 병합된 셀 처리 (병합된 경우 전체 범위 참조) If cell.MergeCells Then Set cell = cell.MergeArea ' 이미지 위치 및 크기 설정 pic_Left = cell.Left + (imageSizeOption * 2) - 2 pic_Top = cell.Top + (imageSizeOption * 2) - 2 pic_Width = cell.Width - (imageSizeOption * 4) + 4 pic_Height = cell.Height - (imageSizeOption * 4) + 4 ' 이미지 삽입 Set insertedImage = ActiveSheet.Shapes.AddPicture(imageFullPath, _ msoFalse, msoCTrue, pic_Left, pic_Top, pic_Width, pic_Height) ' 이미지 테두리 스타일 설정 (선 제거) With insertedImage.Line .Visible = msoFalse End With NextCell: Next cell ' 완료 메시지 MsgBox "이미지 삽입이 완료되었습니다.", vbInformation, "완료" End Sub |