본문 바로가기

엑셀VBA

[엑셀VBA] 하이퍼링크 삽입하기 hyperlinks.add

반응형

안녕하십니까. 춤추는초코칩입니다.

오늘은 예전에 썼던 포스팅을 보강하고자 합니다.

https://stat-and-news-by-daragon9.tistory.com/241

 

[엑셀VBA] 목차 만들기(Sheet Hyperlink)

안녕하십니까 춤추는 초코칩입니다. 업무 중에 필요한 엑셀 VBA를 기록하고 있습니다. "시트명을 클릭하면, 해당 시트로 이동하는 목차" 엑셀을 다루다 보면, 가끔 몇십 개의 시트가 하나의 파일

stat-and-news-by-daragon9.tistory.com

시트에 하이퍼링크를 사용해서 목차를 만드는 매크로였는데요. 내용 중 VBA hyperlink 내용의 설명이 부족한 거 같아서 부연하고자 합니다. 당시에 궁금했었던 내용들도 포함되어 있습니다. 오늘은 hyperlinks object의 method에는 add와 deleter가 있습니다. 하이퍼링크를 추가하는 add에 대해 알아보겠습니다.

1. hyperlinks.add syntax

하이퍼링크의 문법은 아래와 같습니다.

변수 필수여부 설명
Anchor 필수 하이퍼링크의 위치
Address 필수 외부 주소. 기존 파일/웹페이지
SubAddress 선택 내부 주소. 현재 문서
ScreenTip 선택 마우스를 해당 영역에 올렸을 때, 보이는 팁
TextToDisplay 선택 표시할 텍스트

예제를 보면서, 설명드리겠습니다.

Sub HyperLinkAdd()

With Worksheets(1) 
 .Hyperlinks.Add Anchor:=.Range("a5"), _ 
 Address:="https://example.microsoft.com", _ 
 ScreenTip:="Microsoft Web Site", _ 
 TextToDisplay:="Microsoft" 
End With

End Sub

1-1. Anchor

Anchor:=.Range("a5")

A5에 하이퍼링크를 설정합니다.

하이퍼링크를 설정할 위치를 지정합니다. Range 개체가 올 수 있습니다. 따라서, 하나의 셀이나 여러 셀이 포함된 영역이 될 수도 있습니다. 하나의 셀을 지정할 때에는 Cell로 설정할 수도 있습니다.

1-2. Address

Address:="https://example.microsoft.com"

클릭하면, "https://example.microsoft.com"와 연결됩니다.

하이퍼링크를 클릭했을 때, 연결되는 주소입니다. Address와 SubAddress의 차이가 뭔지 계속 검색해 봤는데요. 이렇게 이해하시면 될 거 같습니다. 하이퍼링크를 삽입할 때, 아래와 같은 화면을 보게 되는데요. Address는 기존 파일/웹페이지를 의미하고, SubAddress는 현재 문서를 의미한다고 생각하시면 될 거 같습니다. Address를 기준으로 보면, 현재 폴더, 열어 본 웹 페이지, 최근에 사용한 파일이 나오고, 이 외에도 다양한 폴더, 홈페이지와 연결할 수 있습니다.

1-3. SubAddress

현재 문서 안에서 링크를 만듭니다. 셀 참조를 통해 시트를 선택하고, 참조할 셀 입력에 셀의 위치를 입력할 수 있습니다. 기본은 "A1"으로 설정되어 있습니다. 정의된 이름이 있으면, 해당 이름도 선택할 수 있습니다. 

Address와 SubAddress는 둘 중에 하나만 설정할 수 있습니다. Address를 입력하면, SubAddress는 없어도 되지만, Address는 필수기 때문에, Address:=""으로 입력해야 합니다. Address를 설정하지 않으면, 아래와 같이 '450'런타임 오류가 발생합니다.

1-4. ScreenTip

 ScreenTip:="Microsoft Web Site"

마우스를 하이퍼링크에 올려놓으면, "Microsoft Web Site"라는 툴팁이 뜹니다.

하이퍼링크에 대한 설명을 보여줍니다. 선택 설정이라 사용하지 않는 경우도 많습니다.

1-5. TextToDisplay

TextToDisplay:="Microsoft" 

 해당 셀에 "Microsoft"라는 값을 보여줍니다.

하이퍼링크가 설정된 Anchor에 보져주는 값입니다. 설정하지 않으면, Address 혹은 SubAddress를 보여줍니다.

반응형

2. "참조가 잘못되었습니다."

지난 포스트를 복기해 보면, 문서의 시트명에 띄어쓰기가 있는 경우, SubAddress에 시트 이름으로 그대로 참조하면, "참조가 잘못되었습니다."는 오류가 발생합니다. "참조가 잘못되었습니다."는 연결된 링크의 주소가 잘 못 되었을 때 발생하는데요. 이 경우에는 시트의 이름을 그대로 가져오지 말고, 따옴표를 추가해줘야 합니다. 문자를 나타내는 쌍따옴표도 추가해야 하니 사용에 유의하시기 바랍니다.

SubAddress:="'" & Sheets(i).Name & "'!A1"

3. TextToDisplay에 쌍따옴표 표기하기

다음은 TextToDisplay에 쌍따옴표를 표현하는 방법 3가지를 알아보겠습니다.

Sub HyperLinkAdd()

With Worksheets(1)
 .Hyperlinks.Add Anchor:=.Range("B1"), Address:="https://example.microsoft.com", ScreenTip:="Microsoft Web Site", _
 TextToDisplay:=.Range("A1").Value
 .Hyperlinks.Add Anchor:=.Range("B2"), Address:="https://example.microsoft.com", ScreenTip:="Microsoft Web Site", _
 TextToDisplay:="""Microsoft"""
 .Hyperlinks.Add Anchor:=.Range("B3"), Address:="https://example.microsoft.com", ScreenTip:="Microsoft Web Site", _
 TextToDisplay:=Chr(34) & "Microsoft" & Chr(34)
End With


End Sub

2-1. 다른 셀의 값 참조하기

다른 셀에 입력된 문자를 참조해서 "쌍따옴표"를 표시하는 방법입니다.

2-2. 쌍따옴표 사용하기

하나의 "쌍따옴표"를 문자열에 포함시키려면, 두개의 "쌍따옴표"를 세트로 사용해야 합니다. """Microsoft"""를 풀어서 보면, 첫번째 쌍 따옴표는 문자열을 나타내는 쌍따옴표입니다. 두번째 두개의 쌍따옴표는 "쌍따옴표"를 나타내는 표현방식입니다.

2-3. Chr(34) 사용하기

아스키코드를 활용해서 표현하는 방법입니다. "쌍따옴표"를 나타내는 아스키코드는 34번입니다. 참고로 엑셀에서 아스키코드를 표현하는 함수는 "CHAR"이므로 두 개를 잘 구분해서 사용해야 합니다. 

 

참고사이트

https://learn.microsoft.com/en-us/office/vba/api/excel.hyperlinks.add

 

Hyperlinks.Add method (Excel)

Office VBA reference topic

learn.microsoft.com

https://learn.microsoft.com/en-us/office/vba/access/concepts/criteria-expressions/include-quotation-marks-in-string-expressions

 

Quotation marks in string expressions

Office VBA reference topic

learn.microsoft.com

 

반응형