반응형
엑셀로 상품 리스트나 사원 명부를 만들다 보면
유독 손이 많이 가는 작업이 하나 있습니다.
바로 사진 넣기입니다.
[
삽입] → [그림] 누르고
파일 찾고 → 크기 줄이고 → 셀 안에 맞추고…
사진이 몇 장이면 괜찮은데,
50장, 100장 넘어가면 슬슬 하기 싫어집니다.
그래서 이번에는
셀에 적힌 파일명을 기준으로,
폴더에 있는 사진을 자동으로 불러와
셀 크기에 딱 맞게 넣어주는 VBA 매크로를 정리해봤습니다.
이 매크로 하나만 있으면
사진 넣는 작업은 정말 순식간에 끝납니다.
이런 상황에서 특히 유용합니다
실무에서 생각보다 자주 쓰입니다.
- 쇼핑몰 상품 관리
→ 상품 코드 옆에 상품 사진 한 번에 등록 - 인사·총무 업무
→ 사원 명부에 증명사진 일괄 삽입 - 자산·비품 관리
→ 비품 대장에 물품 사진 정리
사진 작업 때문에
엑셀 쓰기 싫어졌던 분들께 특히 추천입니다.
이 매크로를 쓰기 위한 조건 (중요)
이 매크로는
셀에 적힌 글자와 사진 파일 이름이 같아야 작동합니다.
예를 들어,
- A열 셀에 apple 이라고 적혀 있으면
- 사진 폴더 안에 apple.jpg 파일이 있어야 합니다
👉 파일명 규칙만 맞춰두면
그 다음부터는 완전 자동입니다.
(확장자는 .jpg, .png 등으로 바꿔서 쓸 수 있습니다)
매크로 동작 방식 한 줄 요약
- 사진이 들어 있는 폴더 선택
- 사진 파일명이 적힌 셀 범위 선택
- 각 셀에 맞는 사진을 찾아서
- 셀 크기에 딱 맞게 자동 삽입
마우스로 크기 조절할 일 없습니다.
VBA 매크로 사용 방법
- 엑셀에서 Alt + F11 → VBA 편집기 실행
- 상단 메뉴 [삽입] → [모듈] 클릭
- 아래 코드 그대로 복사해서 붙여넣기
- 엑셀로 돌아와 Alt + F8 → InsertPicturesToFitCell 실행
- 안내에 따라 폴더 선택 → 셀 범위 선택
사진 자동 삽입 VBA 전체 코드
Sub InsertPicturesToFitCell()
Dim PicRng As Range
Dim Cell As Range
Dim FolderPath As String
Dim PicName As String
Dim PicPath As String
Dim MyPic As Object
Dim FileDialog As FileDialog
' 사진 폴더 선택
Set FileDialog = Application.FileDialog(msoFileDialogFolderPicker)
FileDialog.Title = "사진 파일이 저장된 폴더를 선택하세요"
If FileDialog.Show = -1 Then
FolderPath = FileDialog.SelectedItems(1) & "\"
Else
MsgBox "폴더가 선택되지 않았습니다.", vbExclamation
Exit Sub
End If
' 사진을 넣을 셀 범위 선택
On Error Resume Next
Set PicRng = Application.InputBox( _
"사진 파일명이 적힌 셀 범위를 선택하세요.", _
"범위 선택", Type:=8)
On Error GoTo 0
If PicRng Is Nothing Then Exit Sub
Application.ScreenUpdating = False
' 셀별로 사진 삽입
For Each Cell In PicRng
PicName = Cell.Value
PicPath = FolderPath & PicName & ".jpg"
' 파일이 존재할 경우에만 실행
If Dir(PicPath) <> "" Then
Set MyPic = ActiveSheet.Shapes.AddPicture( _
Filename:=PicPath, _
LinkToFile:=msoFalse, _
SaveWithDocument:=msoTrue, _
Left:=Cell.Left, _
Top:=Cell.Top, _
Width:=-1, _
Height:=-1)
' 셀 크기에 맞게 조정
With MyPic
.LockAspectRatio = msoFalse
.Top = Cell.Top + 2
.Left = Cell.Left + 2
.Width = Cell.Width - 4
.Height = Cell.Height - 4
End With
End If
Next Cell
Application.ScreenUpdating = True
MsgBox "사진 삽입이 완료되었습니다.", vbInformation, "완료"
End Sub
Dim PicRng As Range
Dim Cell As Range
Dim FolderPath As String
Dim PicName As String
Dim PicPath As String
Dim MyPic As Object
Dim FileDialog As FileDialog
' 사진 폴더 선택
Set FileDialog = Application.FileDialog(msoFileDialogFolderPicker)
FileDialog.Title = "사진 파일이 저장된 폴더를 선택하세요"
If FileDialog.Show = -1 Then
FolderPath = FileDialog.SelectedItems(1) & "\"
Else
MsgBox "폴더가 선택되지 않았습니다.", vbExclamation
Exit Sub
End If
' 사진을 넣을 셀 범위 선택
On Error Resume Next
Set PicRng = Application.InputBox( _
"사진 파일명이 적힌 셀 범위를 선택하세요.", _
"범위 선택", Type:=8)
On Error GoTo 0
If PicRng Is Nothing Then Exit Sub
Application.ScreenUpdating = False
' 셀별로 사진 삽입
For Each Cell In PicRng
PicName = Cell.Value
PicPath = FolderPath & PicName & ".jpg"
' 파일이 존재할 경우에만 실행
If Dir(PicPath) <> "" Then
Set MyPic = ActiveSheet.Shapes.AddPicture( _
Filename:=PicPath, _
LinkToFile:=msoFalse, _
SaveWithDocument:=msoTrue, _
Left:=Cell.Left, _
Top:=Cell.Top, _
Width:=-1, _
Height:=-1)
' 셀 크기에 맞게 조정
With MyPic
.LockAspectRatio = msoFalse
.Top = Cell.Top + 2
.Left = Cell.Left + 2
.Width = Cell.Width - 4
.Height = Cell.Height - 4
End With
End If
Next Cell
Application.ScreenUpdating = True
MsgBox "사진 삽입이 완료되었습니다.", vbInformation, "완료"
End Sub
마무리
이제 사진 100장을 넣기 위해
100번 클릭할 필요 없습니다.
파일명만 엑셀에 정리해 두고,
이 매크로 한 번 실행하면
사진 삽입 작업은 사실상 끝입니다.
엑셀은
숫자만 다루는 도구가 아니라,
사진·문서·업무 흐름까지 자동화할 수 있는 도구라는 점,
이 매크로로 체감하실 겁니다. 감사합니다!
반응형
'업무 자동화' 카테고리의 다른 글
| 엑셀 시트별로 파일 각각 저장하기 (시트 분할 매크로) (0) | 2026.02.04 |
|---|---|
| 엑셀 VLOOKUP의 한계를 넘는 데이터 조회 자동화 (INDEX-MATCH 활용법) (0) | 2026.02.04 |
| 엑셀 VBA: 두 데이터 비교해서 다른 값 자동으로 찾기 (차이점 색칠 매크로) (0) | 2026.01.30 |
| 엑셀 VBA: 선택한 데이터로 차트(그래프) 자동 만들기 (보고서 시각화 매크로) (0) | 2026.01.29 |
| 엑셀 VBA: 데이터 중간에 있는 빈 줄 한 번에 삭제하기 (전처리 매크로) (0) | 2026.01.28 |