- 공유 링크 만들기
- X
- 이메일
- 기타 앱
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
이 글의 목적은 Microsoft Word 문서에서 링크된 그림의 경로 손실로 인해 이미지가 깨지거나 표시되지 않는 문제를 진단하고, 재연결·임베드·상대경로화 등 근본 해결책을 전문가 수준의 절차로 제공하여 현장에서 즉시 적용하도록 돕는 것이다.
문제 개요와 증상 정의
워드 문서에서 그림을 링크(연결)로 삽입했을 때 원본 파일 경로가 바뀌거나 네트워크 드라이브 매핑이 달라지면 이미지를 불러오지 못하는 현상이 발생한다. 대표 증상은 다음과 같다고 요약한다.
- 문서 열람 시 그림 영역이 공백 또는 X 표시로 보이는 현상이다.
- 인쇄·PDF 저장 시 해당 영역이 비어 있거나 해상도 저하가 발생한다.
Alt+F9로 필드 코드를 표시하면{ INCLUDEPICTURE "구경로\파일명.png" \* MERGEFORMAT }등 오래된 경로가 노출된다.- 파일 > 정보에서 파일에 대한 링크 편집을 보면 상태가 연결 끊김으로 표시된다.
주의 : 링크 삽입과 그림 임베드는 다르다. 링크는 문서 용량이 작지만 원본 경로 의존성이 있다. 반면 임베드는 경로가 필요 없지만 문서 용량이 커진다.
근본 원인 매핑
| 원인 분류 | 세부 원인 | 영향 |
|---|---|---|
| 경로 변경 | 원본 폴더 이동·이름 변경·드라이브 문자 변경(C:\→D:\)·네트워크 공유 경로 변경(\\srvA→\\srvB) | 링크 해제로 표시 실패이다. |
| 권한·네트워크 | VPN 미연결·SMB 권한 부족·오프라인 동기화 지연·OneDrive 경로 전환(개인↔회사) | 열람 시 경로 접근 실패이다. |
| 상대/절대 경로 설정 미흡 | 하이퍼링크 기준 폴더 미설정, 문서와 리소스 폴더 구조 불일치 | 배포 시 대량 손실 재발이다. |
| 보안·정책 | 신뢰할 수 있는 위치 미설정, 외부 콘텐츠 차단, 보호된 보기 | 자동 갱신 차단 또는 링크 업데이트 실패이다. |
빠른 복구 퀵스타트
- 필드 코드 점검:
Alt+F9눌러INCLUDEPICTURE경로를 직접 확인한다. - 일시적 재연결: 파일 > 정보 > 파일에 대한 링크 편집에서 원본 변경으로 새 루트 폴더를 지정한다.
- 영구 해결: 하단 절차에 따라 상대경로화, 문서 속성의 하이퍼링크 기준 설정, 또는 임베드로 변환한다.
표준 운영 절차(SOP) 1: UI로 링크 일괄 복구
- 문서를 연다.
- 파일 탭을 클릭한다.
- 정보 화면에서 파일에 대한 링크 편집을 연다. 리스트에 각 그림 링크의 상태와 원본이 나타난다.
- 상태가 연결 끊김인 항목을 선택하고 원본 변경으로 새 폴더의 동일 파일을 지정한다.
- 경로 패턴이 유사하면 여러 항목을 선택해 한 번에 교체한다.
- 확인 후 문서를 저장한다.
주의 : 동일 파일명이 여러 하위폴더에 분산된 경우 자동 일괄 교체가 잘못 매핑될 수 있다. 이 경우 스크립트 또는 VBA로 안전하게 조건부 매칭을 수행한다.
표준 운영 절차(SOP) 2: 상대경로 체계로 전환
문서 배포·이동이 잦다면 절대경로 대신 상대경로를 설계한다. 권장 구조는 아래와 같다.
Project/ ├─ Doc/ │ └─ 보고서_v1.docx └─ Assets/ ├─ img/ │ ├─ fig1.png │ └─ fig2.jpg └─ logo/ └─ corp.svg - 문서를
Project/Doc에, 그림 자산을Project/Assets하위에 둔다. - 워드에서 파일 > 정보 > 속성 > 고급 속성을 연다.
- 요약 탭의 하이퍼링크 기준에
..\Assets\를 입력 후 저장한다. - 그림을 다시 링크 삽입하거나 아래 VBA로 경로를 상대경로로 치환한다.
주의 : 하이퍼링크 기준은 문서 내부의 링크 해석 기준을 제공한다. 운영체제 드라이브 문자가 바뀌더라도 폴더 상대위치가 유지되면 링크가 살아있다.
표준 운영 절차(SOP) 3: 임베드로 변환해 경로 의존성 제거
문서의 이동성이 최우선이면 링크를 임베드로 바꾼다. 다음 두 가지를 병행한다.
- 파일에 대한 링크 편집에서 항목 선택 후 연결 끊기를 수행한다.
- 또는 VBA에서
SavePictureWithDocument=True로 강제 임베드한다.
주의 : 임베드 시 파일 크기가 커진다. 내부 정책상 메일 첨부 제한이 있는 경우 PDF 배포 또는 그림 해상도 최적화가 필요하다.
보안·정책 설정 점검
- 파일 > 옵션 > 보안 센터 > 보안 센터 설정에서 신뢰할 수 있는 위치에 리소스 폴더를 추가한다.
- 파일 > 옵션 > 고급에서 문서 열 때 자동 링크 업데이트 옵션을 활성화한다.
- 보호된 보기로 열렸다면 상단 배너에서 편집 사용을 허용한다.
현업 체크리스트
| 항목 | 체크 포인트 | 주기 | 기대 효과 |
|---|---|---|---|
| 폴더 구조 표준화 | Doc/Assets 분리·상대경로 기준 설정 | 신규 프로젝트마다 | 경로 손실 재발 방지이다. |
| 링크 인벤토리 | VBA 리포트로 링크 목록 내보내기 | 주 1회 | 깨진 링크 사전 탐지이다. |
| 권한 점검 | SMB 권한·VPN 접속 확인 | 월 1회 | 접근 오류 감소이다. |
| 백업 정책 | 자산 폴더 스냅샷·버전관리 | 매일 | 파일 이동·삭제 리스크 완화이다. |
고급: VBA로 링크 상태 감사(Report)
다음 매크로는 문서 내 InlineShapes와 Shapes의 링크 정보를 수집하여 테이블로 보여준다. 표를 복사해 엑셀로 내보내면 일괄 작업 근거자료가 된다.
Sub ReportImageLinks() Dim rng As Range, i As Long Dim t As String t = "Index" & vbTab & "Type" & vbTab & "Status" & vbTab & "SourceFullName" & vbTab & "SaveWithDoc" & vbCrLf
' InlineShapes
For i = 1 To ActiveDocument.InlineShapes.Count
With ActiveDocument.InlineShapes(i)
If Not .LinkFormat Is Nothing Then
t = t & i & vbTab & "Inline" & vbTab & IIf(.LinkFormat.Broken, "Broken", "OK") _
& vbTab & .LinkFormat.SourceFullName & vbTab & .LinkFormat.SavePictureWithDocument & vbCrLf
End If
End With
Next i
' Shapes (그림 캡션 상자 등 포함)
For i = 1 To ActiveDocument.Shapes.Count
With ActiveDocument.Shapes(i)
If .Type = msoPicture Or .Type = msoLinkedPicture Then
If Not .LinkFormat Is Nothing Then
t = t & i & vbTab & "Shape" & vbTab & IIf(.LinkFormat.Broken, "Broken", "OK") _
& vbTab & .LinkFormat.SourceFullName & vbTab & .LinkFormat.SavePictureWithDocument & vbCrLf
End If
End If
End With
Next i
Set rng = ActiveDocument.Range(0, 0)
rng.Text = t
rng.ConvertToTable Separator:=wdSeparateByTabs, AutoFitBehavior:=wdAutoFitContent
End Sub
주의 :
.LinkFormat.Broken은 일부 버전에서 항상 False를 반환할 수 있다. 이 경우 Dir(.LinkFormat.SourceFullName) = ""로 존재 여부를 교차검증한다.고급: VBA로 새 루트폴더로 일괄 재연결(Rebase)
구 루트 경로가 D:\OldAssets\이고 새 루트 경로가 \\NewSrv\Design\Assets\라면 아래 코드를 사용한다.
Sub RebaseImageLinks() Dim oldRoot As String, newRoot As String Dim i As Long, src As String, alt As String
oldRoot = "D:\OldAssets\"
newRoot = "\\NewSrv\Design\Assets\"
' InlineShapes
For i = 1 To ActiveDocument.InlineShapes.Count
With ActiveDocument.InlineShapes(i)
If Not .LinkFormat Is Nothing Then
src = .LinkFormat.SourceFullName
If LCase(Left(src, Len(oldRoot))) = LCase(oldRoot) Then
alt = newRoot & Mid(src, Len(oldRoot) + 1)
If Dir(alt) <> "" Then
.LinkFormat.SourceFullName = alt
.LinkFormat.AutoUpdate = True
End If
End If
End If
End With
Next i
' Shapes
For i = 1 To ActiveDocument.Shapes.Count
With ActiveDocument.Shapes(i)
If Not .LinkFormat Is Nothing Then
src = .LinkFormat.SourceFullName
If LCase(Left(src, Len(oldRoot))) = LCase(oldRoot) Then
alt = newRoot & Mid(src, Len(oldRoot) + 1)
If Dir(alt) <> "" Then
.LinkFormat.SourceFullName = alt
.LinkFormat.AutoUpdate = True
End If
End If
End If
End With
Next i
ActiveDocument.Fields.Update
MsgBox "재연결 완료"
End Sub
고급: 링크를 임베드로 일괄 전환
배포용 최종본은 링크를 임베드로 고정하는 것이 안전하다. 다음 코드를 사용한다.
Sub EmbedAllLinkedPictures() Dim i As Long
' InlineShapes
For i = ActiveDocument.InlineShapes.Count To 1 Step -1
With ActiveDocument.InlineShapes(i)
If Not .LinkFormat Is Nothing Then
.LinkFormat.SavePictureWithDocument = True
.LinkFormat.BreakLink
End If
End With
Next i
' Shapes
For i = ActiveDocument.Shapes.Count To 1 Step -1
With ActiveDocument.Shapes(i)
If Not .LinkFormat Is Nothing Then
.LinkFormat.SavePictureWithDocument = True
.LinkFormat.BreakLink
End If
End With
Next i
ActiveDocument.Save
MsgBox "모든 링크가 임베드로 전환되었다."
End Sub
주의 : 실행 전 문서 백업을 만든다. 되돌리기 어려운 작업이다.
필드 코드 기반 링크(INCLUDEPICTURE) 업데이트
메일머지 등에서 INCLUDEPICTURE 필드를 사용하는 경우가 많다. 다음 절차로 경로를 빠르게 갱신한다.
Alt+F9로 필드 코드 표시한다.Ctrl+H치환으로D:\OldAssets\를\\NewSrv\Design\Assets\로 바꾼다.Ctrl+A전체 선택 후F9로 필드 업데이트한다.- 표시 전환(
Alt+F9) 후 그림 로딩을 검증한다.
주의 : 경로 문자열이 본문 텍스트에도 존재할 수 있다. 치환 범위를 주요 섹션으로 제한하거나 버전관리로 보호한다.
OneDrive·SharePoint 시나리오
- 사용자 프로필 경로가 조직 정책으로 바뀔 수 있다.
C:\Users\A\OneDrive→C:\Users\A\OneDrive - Company전환 시 링크 손실이 발생한다. - 동기화 완료 전에는 파일이 표시되지 않는다. 클라우드 표시 상태를 항상 이 장치에 유지로 설정한다.
- 공유 링크 URL 기반 원격 이미지는 네트워크 차단으로 로딩이 지연될 수 있다. 가능하면 로컬/사내 경로를 사용한다.
배포 전략: 문서 패키징
링크 유지 배포가 필요한 경우 문서와 자산 폴더를 함께 전달한다. 기본 원칙은 다음과 같다.
- 상대경로 기준으로 구조를 고정한다.
- 압축 시 폴더 구조를 보존한다.
- 수신자가 동일 구조로 해제하도록 안내한다.
문제-대응 매트릭스
| 증상 | 가능 원인 | 즉각 조치 | 근본 해결 |
|---|---|---|---|
| 일부 페이지만 그림 누락이다. | 하위폴더 일부만 이동됨이다. | 링크 편집에서 해당 항목만 원본 변경한다. | 자산 폴더를 통합 후 상대경로화한다. |
| 모든 그림이 공백이다. | 루트 드라이브 변경이다. | VBA Rebase로 일괄 치환한다. | 하이퍼링크 기준 설정 및 표준 경로 정책 수립한다. |
| PDF에만 그림 미출력이다. | 링크 원본 접근 지연·권한 문제이다. | 임베드 전환 후 PDF 생성한다. | 빌드 스테이션에 자산 미러링 및 권한 고정한다. |
| 특정 PC에서만 미표시이다. | 보안 센터 정책 차이이다. | 신뢰된 위치 추가 및 보호된 보기 해제한다. | 그룹 정책으로 표준화한다. |
품질 보증(QA) 점검 루틴
- 링크 목록 내보내기: Report 매크로로 CSV 수준의 리스트 확보한다.
- 존재 검증:
Dir()또는 파일 탐색기로 실제 파일 존재 여부를 대조한다. - 랜덤 샘플 열람: 10% 샘플 페이지를 스크롤하면서 로딩 확인한다.
- 빌드 테스트: PDF 저장·인쇄 미리보기로 출력 품질을 검증한다.
운영 팁과 베스트 프랙티스
- 파일명 불변 규칙: 그림 파일명에 공백·특수문자·매우 긴 길이를 피한다. ASCII 기반 영숫자와 밑줄을 권장한다.
- 해상도 정책: 300dpi 원본을 보관하고 문서 삽입 시 표시 크기에 맞게 스케일한다.
- 버전관리: 자산 폴더와 문서를 함께 태그한다. 예:
Assets@2025-10-09이다. - 템플릿화: 표준 문서 템플릿에 하이퍼링크 기준과 기본 폴더를 미리 설정한다.
자동 수리: 링크 유효성 검사·치환 결합 매크로
아래 매크로는 존재하지 않는 경로를 탐지하고 지정한 후보 루트를 돌며 첫 유효 경로로 치환한다.
Sub HealBrokenImageLinks() Dim candidates As Variant Dim i As Long, j As Long Dim src As String, rel As String, f As String
candidates = Array("D:\Assets\", "\\Srv\Design\Assets\", "..\Assets\", "C:\Work\Assets\")
' InlineShapes
For i = 1 To ActiveDocument.InlineShapes.Count
With ActiveDocument.InlineShapes(i)
If Not .LinkFormat Is Nothing Then
src = .LinkFormat.SourceFullName
If Dir(src) = "" Then
For j = LBound(candidates) To UBound(candidates)
f = candidates(j) & Dir(src) ' 파일명만 붙이는 간단 매칭
If Dir(f) <> "" Then
.LinkFormat.SourceFullName = f
Exit For
End If
Next j
End If
End If
End With
Next i
' Shapes
For i = 1 To ActiveDocument.Shapes.Count
With ActiveDocument.Shapes(i)
If Not .LinkFormat Is Nothing Then
src = .LinkFormat.SourceFullName
If Dir(src) = "" Then
For j = LBound(candidates) To UBound(candidates)
f = candidates(j) & Dir(src)
If Dir(f) <> "" Then
.LinkFormat.SourceFullName = f
Exit For
End If
Next j
End If
End If
End With
Next i
ActiveDocument.Fields.Update
MsgBox "유효성 검사 및 자동 치환 완료"
End Sub
주의 : 위 코드는 파일명이 유일하다는 가정을 둔다. 동일 파일명이 다수인 환경에서는 경로 후보를 더 정교하게 구성하거나 메타데이터 매칭을 도입한다.
대규모 전환 전략(조직 차원)
- 자산 카탈로그: 공용
Assets저장소를 단일 UNC로 고정한다. - 매핑 금지: 개인별 드라이브 문자 매핑 대신 UNC 경로 표준을 강제한다.
- 템플릿 보급:
Normal.dotm또는 조직 템플릿에 하이퍼링크 기준을 프리셋한다. - CI 빌드: PDF 생성 서버에서 자산 폴더를 동일 경로에 미러링한다.
복구 후 검증 시나리오
- 문서 열람 즉시 스크롤 전 범위를 로드해 캐시를 채운다.
- 인쇄 미리보기로 모든 섹션의 그림이 출력되는지 확인한다.
- PDF 저장 파일의 크기·렌더 품질·폰트와의 레이아웃 충돌 여부를 점검한다.
FAQ
링크 유지와 임베드 중 무엇을 선택해야 하나?
팀 협업에서 소스 이미지를 수시 교체한다면 링크를 유지하고, 최종 배포본이나 외부 전달본은 임베드로 전환하는 것이 안전하다.
상대경로가 적용되지 않는 것처럼 보이는 이유는 무엇인가?
하이퍼링크 기준이 빈 값이거나 문서와 자산 폴더 상대위치가 바뀌었기 때문이다. 문서 저장 후 다시 열어 기준이 반영되는지 확인한다.
PDF로 저장할 때만 그림이 빠지는 경우 해결법은?
권한·네트워크 지연으로 렌더 타임에 링크를 불러오지 못할 수 있다. 사전에 임베드로 전환하거나 신뢰된 위치에 자산 폴더를 등록한다.
그림 캡션과 도형 안에 들어간 링크도 동일하게 처리되나?
InlineShapes와 Shapes 모두 .LinkFormat을 지원한다. 상단 VBA 예제는 두 유형을 모두 처리한다.
파일명이 바뀐 경우 자동 복구가 가능한가?
파일명까지 변경되면 단순 경로 치환만으로는 복구가 어렵다. 매핑 테이블을 만들어 VBA에서 사전(Dictionary) 기반 치환을 수행한다.