엑셀 하이퍼링크 텍스트만 복사하면 링크가 사라질 때 완벽 해결법

이 글의 목적은 Excel에서 하이퍼링크가 걸린 셀의 “표시 텍스트만” 복사할 때 링크가 끊기는 원인과, 링크를 유지하거나 필요한 형식으로 정확히 추출·재구성하는 실무형 해결책을 단계별로 제시하는 것이다.

1. 문제의 구조 이해: 표시 텍스트 vs. 링크 대상

엑셀의 하이퍼링크는 크게 두 요소로 구성되며, 복사 동작마다 처리 방식이 다르다.

  • 표시 텍스트(Display Text) : 셀에 보이는 문자열이다.
  • 주소(Address/SubAddress) : 웹 URL, 파일 경로, 메일 주소 또는 통합문서 내부 참조 등 링크 대상이다.

일반 복사는 셀 전체를 복사해야 하이퍼링크 개체가 함께 이동한다. 반면 F2로 셀 편집 모드에서 문자를 일부만 드래그해 복사하면 그 순간은 단순 텍스트로 인식되어 링크 정보가 제거된다. 이 차이가 “텍스트만 복사 시 링크 끊김”의 1차 원인이다.

주의 : 하이퍼링크가 걸린 셀에서 문자열 일부만 선택해 Ctrl+C를 수행하면 링크는 보존되지 않는다. 링크 유지가 필요하면 셀 선택 상태(편집 모드 아님)에서 복사해야 한다.

2. 가장 빠른 기본 해결: 복사 방식 바꾸기

다음 순서를 따르면 대부분의 기본 시나리오에서 링크가 유지된다.

  1. 편집 모드가 아닌 셀 전체를 선택한다.
  2. Ctrl+C로 복사한다.
  3. 붙여넣기 대상에서 Ctrl+V 또는 붙여넣기 옵션 → 원본 서식 유지를 선택한다.

이 절차는 엑셀 → 엑셀, 엑셀 → Word/Outlook 등 서식 있는 붙여넣기를 지원하는 앱에서 링크를 보존한다. 반면 메모장처럼 서식을 지원하지 않는 곳으로 붙여넣으면 링크는 형식상 존재할 수 없다.

주의 : “표시 텍스트만”을 다른 곳으로 옮기되 링크도 함께 유지하려면, 붙여넣기 대상 앱이 서식을 지원해야 한다. 지원하지 않는 앱에서는 링크 보존이 불가능하다.

3. 표시 텍스트는 유지하고 링크도 따로 보관해야 할 때

업무상 텍스트는 보고서 본문으로, 링크는 별도 열 또는 주석으로 저장해야 하는 경우가 많다. 다음 방식으로 표시 텍스트와 URL을 분리·정리한다.

3.1 하이퍼링크 주소 일괄 추출(VBA UDF)

엑셀 기본 함수에는 “하이퍼링크 주소 추출”이 없다. 다음 사용자 정의 함수(UDF)를 표준 모듈에 추가해 활용한다.

Option Explicit
'하이퍼링크의 URL/경로를 반환한다. 없으면 빈 문자열을 반환한다.
Public Function GetHyperlinkAddress(ByVal Target As Range) As String
On Error GoTo SafeExit
If Target Is Nothing Then GoTo SafeExit
If Target.Hyperlinks.Count > 0 Then
GetHyperlinkAddress = Target.Hyperlinks(1).Address
Else
GetHyperlinkAddress = ""
End If
SafeExit:
End Function

'통합문서 내부 링크의 SubAddress(예: Sheet1!A1, 이름정의 등)를 반환한다.
Public Function GetHyperlinkSubAddress(ByVal Target As Range) As String
On Error GoTo SafeExit
If Target Is Nothing Then GoTo SafeExit
If Target.Hyperlinks.Count > 0 Then
GetHyperlinkSubAddress = Target.Hyperlinks(1).SubAddress
Else
GetHyperlinkSubAddress = ""
End If
SafeExit:
End Function

사용 예시는 다음과 같다.

  • =GetHyperlinkAddress(A2) → A2의 URL/경로 반환
  • =GetHyperlinkSubAddress(A2) → A2가 내부 링크일 때 대상 주소 반환

이렇게 추출한 주소를 별도 열에 두고, 표시 텍스트 열은 그대로 유지하여 보고서와 데이터 표준화 모두 충족한다.

3.2 표시 텍스트+주소로 하이퍼링크 재구성

표시 텍스트와 주소를 분리했으면, 필요한 시점에 HYPERLINK 함수로 재조합한다.

=HYPERLINK(B2, A2) 

위 식에서 A2는 표시 텍스트, B2는 URL/경로 열이다. 이렇게 만든 결과 셀은 다시 복사해도 링크가 유지된다.

4. 텍스트 일부만 복사해야 하지만 링크는 유지하고 싶은 고급 시나리오

셀 안의 문자열 일부만 다른 셀에 붙여넣되, 그 부분만 클릭 가능한 링크로 남기고 싶을 수 있다. 다음 두 가지 접근을 사용한다.

4.1 셀 내부 부분 하이퍼링크 지정

엑셀은 한 셀 내부에서 일부 문자에만 링크를 부여할 수 있다(서식 있는 텍스트). 절차는 아래와 같다.

  1. 원본 셀에서 F2로 편집 모드 진입 후, 링크 부여할 부분 문자열만 드래그한다.
  2. 마우스 오른쪽 버튼 → 링크(또는 Ctrl+K) → 주소를 입력한다.
  3. 이제 해당 부분만 클릭 가능하다.

이 텍스트 일부를 다른 엑셀 셀로 복사할 때는 서식을 유지하는 붙여넣기를 사용하면 링크가 유지되는 경우가 많다. 다만 대상이 다른 애플리케이션이면 링크 유지 여부가 앱의 리치 텍스트 처리 능력에 좌우된다.

주의 : 부분 하이퍼링크는 서식 개체로 저장된다. 수식으로는 일부 링크를 직접 생성·제어하기 어렵다. 자동화가 필요하면 VBA를 사용한다.

4.2 VBA로 선택 문자열만 링크로 만들며 붙여넣기

다음 매크로는 현재 선택된 셀의 일부 텍스트만을 다른 셀에 복사하고, 동일 주소의 링크를 적용한다.

Sub CopyPartialTextWithLink() Dim src As Range, tgt As Range Dim startPos As Long, length As Long Dim linkAddr As String
Set src = Selection
If src Is Nothing Then Exit Sub
If src.Hyperlinks.Count = 0 Then
    MsgBox "원본 셀에 하이퍼링크가 없다."
    Exit Sub
End If

'예시: 6번째 문자부터 10자 길이를 복사/적용
startPos = 6
length = 10

linkAddr = src.Hyperlinks(1).Address

Set tgt = Application.InputBox("붙여넣을 대상 셀 선택", Type:=8)
If tgt Is Nothing Then Exit Sub

tgt.Value = Mid$(CStr(src.Value), startPos, length)
tgt.Characters(1, length).Font.Underline = xlUnderlineStyleSingle
tgt.Characters(1, length).Font.Color = vbBlue
ThisWorkbook.Worksheets(tgt.Worksheet.Name).Hyperlinks.Add _
    Anchor:=tgt.Characters(1, length), _
    Address:=linkAddr, _
    SubAddress:=""
End Sub

업무에 맞게 startPoslength를 동적으로 계산하여 적용하면 된다.

5. 엑셀 버전·플랫폼별 체크리스트

환경권장 복사 방식붙여넣기 권장 옵션비고
Windows Excel 2016~Microsoft 365 셀 전체 선택 후 Ctrl+C 원본 서식 유지 또는 대상 서식 맞추기 서식 유지 시 링크 보존 가능성이 높다.
Mac Excel 2019~Microsoft 365 셀 전체 선택 후 ⌘+C 편집 → 선택하여 붙여넣기 → 형식 유지 일부 앱 간 붙여넣기에서 리치 텍스트 처리 차이가 있다.
Excel on the Web 셀 전체 복사 동일 웹 앱 내 붙여넣기 권장 브라우저 보안·클립보드 정책 영향이 있다.
엑셀 → 메모장 해당 없음 순수 텍스트만 가능 링크 보존 불가. URL 별도 열 제공이 해법이다.

6. 대량 정리 전략: 텍스트/URL 컬럼화 후 재하이퍼링크

수백 건의 링크가 걸린 목록을 재배치해야 할 때 다음 4단계를 권장한다.

  1. 원본 : A열에 표시 텍스트, A열 셀에는 하이퍼링크가 걸려 있다고 가정한다.
  2. URL 추출 : B열에 =GetHyperlinkAddress(A2)를 채워 URL만 별도 컬럼화한다.
  3. 편집 : 표시 텍스트(A열)를 자유롭게 정제한다(줄 바꿈, 접두사 제거 등).
  4. 재생성 : C열에 =HYPERLINK(B2, A2)로 최종 하이퍼링크를 만든다.

이렇게 구성하면 A열은 보고서 가독성 중심, B열은 데이터 이관 중심, C열은 클릭 동작 중심으로 역할이 분리되어 관리성이 높아진다.

7. Excel 내부 참조(시트/이름) 링크의 특수성

같은 통합문서 내부로 이동하는 링크는 Address가 비어 있고 SubAddress만 채워지는 경우가 많다. 위 UDF의 GetHyperlinkSubAddress로 대상 주소를 별도 열에 확보한 뒤, 재구성 시 다음 형태를 쓴다.

=HYPERLINK("#" & D2, A2) 

D2에 Sheet1!A1 같은 내부 대상이 들어 있다고 가정한다.

주의 : 내부 링크를 외부 파일로 내보낼 때는 상대/절대 경로 처리와 함께 내부 이름 정의의 존재 여부를 점검해야 한다.

8. 메일 주소, 파일 경로 링크의 호환성 체크

  • 메일 링크 : mailto:name@example.com?subject=... 형식은 일부 붙여넣기 대상에서 자동 클릭이 비활성화될 수 있다. 대상 앱의 메일 처리 옵션을 점검한다.
  • 파일 경로 : \\서버\공유\파일.xlsx 형식은 보안 정책에 따라 차단될 수 있다. 문서화 시 URL 인코딩 또는 포털 링크로 변환을 고려한다.

9. SharePoint·OneDrive와 연동된 링크 유지 요령

조직 문서에서 자주 발생하는 링크 만료·권한 오류를 줄이기 위해 다음을 따른다.

  1. 공유 링크는 조직 내부 전용 또는 특정 사용자 범위로 고정한다.
  2. 표시 텍스트에 문서 제목버전 또는 날짜를 포함해 가독성을 높인다.
  3. URL은 별도 열로 유지해 회수·갱신을 자동화한다.
주의 : 링크 짧게 만들기(URL Shortener)는 편리하지만 만료·추적 정책에 유의해야 한다. 내부 문서에는 원본 URL 보관이 필수이다.

10. 자동화: Office Scripts(웹)로 URL 컬럼 만들기

Excel on the Web 환경에서는 다음 Office Script로 선택 영역 내 하이퍼링크 주소를 옆 열에 채울 수 있다.

function main(workbook: ExcelScript.Workbook) { const sheet = workbook.getActiveWorksheet(); const range = sheet.getUsedRange(); const rows = range.getRowCount(); const cols = range.getColumnCount();
// A열에 표시 텍스트, B열에 URL을 담는 예시
for (let r = 0; r < rows; r++) {
const cell = range.getCell(r, 0);
const rich = cell.getRichText();
if (rich) {
const runs = rich.getRuns();
let url = "";
for (const run of runs) {
const link = run.getLink();
if (link) { url = link.getAddress() ?? ""; break; }
}
range.getCell(r, 1).setValue(url);
} else {
// 일반 링크(셀 전체 링크) 처리
const link = cell.getHyperlink();
if (link) {
range.getCell(r, 1).setValue(link.address ?? "");
} else {
range.getCell(r, 1).setValue("");
}
}
}
}

스크립트 실행 후 B열에 URL이 정리되므로, 보고서에는 A열을, 시스템 이관에는 B열을 사용하면 된다.

11. 자주 묻는 오해 정정

  • 오해: 표시 텍스트만 복사해도 링크는 자동으로 따라온다.
    사실: 편집 모드에서 부분 선택 복사는 텍스트만 이동하며 링크는 제거된다.
  • 오해: 하이퍼링크 주소는 엑셀 기본 함수로 쉽게 뽑을 수 있다.
    사실: 기본 제공 함수가 없다. VBA/UDF나 Office Scripts로 처리한다.
  • 오해: 어떤 앱으로 붙여넣어도 링크는 유지된다.
    사실: 대상 앱이 서식을 지원해야 한다. 메모장 등은 불가하다.

12. 문제별 처방 매뉴얼

증상원인즉시 해결근본 해결
텍스트만 복사하니 링크 소실 편집 모드 부분 선택 복사 셀 전체 선택 후 복사 URL 별도 열 관리 + HYPERLINK 재생성
다른 앱에 붙여넣자 링크 사라짐 대상 앱이 서식 미지원 서식 지원 앱으로 중계(Word/Outlook) 텍스트/URL 분리 저장 후 문서화 규정 수립
내부 참조 링크 주소가 안 보임 SubAddress 형태로만 저장 하이퍼링크 편집 창에서 확인 UDF로 SubAddress 추출·보관
대량 목록에서 링크 관리 어려움 표시 텍스트와 URL 혼재 URL 컬럼 신설 VBA/Office Scripts로 일괄 추출·재하이퍼링크

13. 키보드 중심 빠른 작업 루틴

  1. 셀 선택 → Ctrl+C 복사
  2. 대상 셀 → Ctrl+Alt+VH(원본 서식 유지) 또는 Enter
  3. URL 추출 필요 시 → 인접 열에 =GetHyperlinkAddress(셀)
  4. 최종 문서에는 =HYPERLINK(URL셀, 텍스트셀) 사용

14. 품질 보증 체크리스트

  • 표시 텍스트와 URL이 서로 다른 열에 존재하는가.
  • 내부 참조(SubAddress)와 외부 주소(Address)를 구분했는가.
  • 대상 문서/앱의 붙여넣기 서식 정책을 사전에 검토했는가.
  • 대량 변경은 매크로/스크립트로 재현 가능한가.

FAQ

하이퍼링크 편집 창에서 URL을 직접 복사하는 것이 가장 안전한가?

정확성이 중요하면 가장 안전하다. 표시 텍스트와 무관하게 실제 주소를 복사할 수 있기 때문이다. 다만 대량 작업에는 비효율적이므로 UDF/스크립트를 권장한다.

표시 텍스트 일부만 다른 셀에 붙여넣는데 링크도 유지하고 싶다. 가능하나?

가능하나 자동화 난도가 있다. 부분 하이퍼링크를 수동으로 설정하거나 VBA로 부분 문자열에만 링크를 적용하는 방식을 쓴다. 대상 앱이 서식을 지원해야 한다.

메모장으로 붙여넣으면 링크가 사라진다. 방법이 있나?

메모장은 서식을 지원하지 않아 불가하다. URL을 별도 열로 두고 그 값을 함께 제공하는 방식으로 대체한다.

SharePoint 링크를 복사했더니 상대에게 열람 권한이 없다고 나온다.

공유 범위가 제한되었기 때문이다. 조직 정책에 맞춘 공유 링크를 생성하고, 보고용 텍스트와 URL 원본을 분리 보관한다.

URL 추출을 수식만으로 처리할 수 있나?

엑셀 기본 함수만으로는 어렵다. VBA UDF나 Office Scripts를 사용한다. 링크를 처음부터 HYPERLINK 함수로 구성했다면 원본 텍스트/URL 열을 함께 관리하는 것이 최선이다.