엑셀(EXCEL) – HyperLink를 KeyBoard를 사용해서 화일, 폴더나 웹사이트 열기

 

아질게 질문에 간단하면서도 어려운 질문이 올라왔네요. HyperLink를 마우스로 누르면 바로 이동이나
웹사이트, 폴더, 화일은 바로 열기가 가능한데 Keyboard로 조작해서 열려고 하는데 방법이 궁금하다고
질문이 올라왔습니다.

이 질문을 어떻게 해결할까 고민하다 저번에 Animation Chart 팁에 활용한 함수가 생각이 났습니다.
Application.OnTime라는 것인데 설명하자면 Application내에서 지정된 시각에 함수나 서브루틴을 할당?
하는 것입니다.

http://www.clien.net/cs2/bbs/board.php?bo_table=lecture&wr_id=269998
(엑셀(EXCEL) – 동적이름정의, Timer를 이용하여 Animation Chart 만들기)

그것을 응용한 Application.OnKey라는 함수를 이용하고자 합니다. 이 함수는 기본적으로 할당된 함수에
별도의 키를 할당하여 함수, 서브루틴을 할당할 수 있는 기능입니다. 이 기능을 사용해서 기본적으로 할당된
Ctrl+C, Ctrl+V 같은 것을 무력화 할 수도 있도 특수 키들에 다른 기능을 부여할 수도 있습니다.

자! 시작해 볼까요?

언제나 처럼 VBA Editor 여시고 Module 하나 삽입하시고 아래 코드를 붙여 넣습니다.

Option Explicit

Sub OpenHyperLink()

Dim Target As String

‘ 첨부된 내용에 오류가 있으니 아래 두줄을 대체해 넣으셔야 합니다. ㅠㅠ

Target = Ucase(ActiveCell.Value)

If InStr(Target, “HTTP://”) Then

ActiveWorkbook.FollowHyperlink Address:=Target, NewWindow:=True ‘웹사이트 열기

Else

ActiveWorkbook.FollowHyperlink Address:=Target, NewWindow:=True ‘파일, 폴더 열기

End If

End Sub

간단히 말하면 현재 셀의 값을 이용해서 화일, 폴더 위치를 열거나 웹사이트를 열도록 하는 것입니다.
그리고 ThisWorkBook을 더블 클릭하시고 아래 코드를 붙여넣기 합니다.

Option Explicit

Private Sub Workbook_Activate()

Application.OnKey “+{NUMLOCK}”, “OpenHyperLink”

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Application.OnKey “+{NUMLOCK}”

End Sub

Private Sub Workbook_Deactivate()

Application.OnKey “+{NUMLOCK}”

End Sub

Private Sub Workbook_Open()

Application.OnKey “+{NUMLOCK}”, “OpenHyperLink”

End Sub

설명하자면 Shift + NumLock 키를 누르면 OpenHyperLink 루틴을 실행하라는 것입니다. 웹에서 OnKey에
대해 검색하시면 특수키의 정의가 나오므로 필요에 따라 바꾸어 사용하시면 됩니다. 전 거의 사용할 일이
없는 Shift + NumLock를 특수키로 정의했습니다.

엑셀을 끝내거나 다른 워크북을 사용하거나 다시 이 워크북을 사용할 때 기능키를 활성, 비활성화 하는
루틴을 넣어둡니다. 그렇지 않으면 다른 프로그램이나 다른 시트에서 오동작?을 할 수 있기 때문입니다.

별 쓸모도 없는 팁이지만? 꼭 필요한 분이 계실거라고 판단해서 올립니다. 잘 사용하시기를…

첨부 화일 :  20150921-Hyperlink-Open-By-Keyboard