9월 21 2015
엑셀(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
9월 22 2015
엑셀(EXCEL) – 엑셀에서 실시간 철자 검사(Spelling Check)하면서 입력하는 방법
요사이 워드보다 더 워드 같은 엑셀을 사용하여 내용, 표, 그래프 등을 배치, 자유자재로 쓸 수 있는 엑셀을
선호하는 분들이 많으신 것 같더군요. 마이크로소프트의 Office Suite에서 Word는 실시간으로 철자 체크가
가능하지만 엑셀에서는 아직까지는 되지않는 것으로 알고 있습니다.
그래서 열심히 구걸했습니다. 언제나 세상에는 필요한 사람이 있고 그것을 해결하는 천재적인 분들이 많이
계시더군요. 외국 자료라 한글에 대한 옵션 부분이 들어가 있지 않아서 제가 수정해서 팁으로 올립니다.
딱히 설명할 내용도 없습니다. 시트의 셀의 내용이 변하면 전체를 Spellcheck Engine을 사용해서 True이면
그냥 입력하고 False이면 그 부분을 붉은색으로 글꼴을 바꾸는 것입니다. 다른 형식들을 지정해도 상관이
없지만 철자를 교정하고 나도 형식지정된 부분이 남아서 색깔이나 형식 등 하나만을 사용해서 표시를 해야
수정 후 원래 형식대로 돌아갈 수 있습니다.
그래서 별도로 전체 시트에 대해 철차 체크를 하는 루틴을 만들어 두었습니다. 실시간이 아닌 기존 입력된
시트의 철자 체크를 하시려면 Spell_Correction Routine을 한 번 실행하시면 오타나 잘못된 부분을 붉은색으로
변경해 줍니다. 물론 예시로 올린 그림에서 왼쪽 상단의 맞춤법검사 버튼을 눌러 실시간으로 확인하면서
수정할 수 있지만 이 루틴을 돌리면 틀린 부분을 바로 알 수 있어 수작업으로 바로 바로 바꿀때 사용하세요.
VBA Editor 여시고 Module 하나 삽입하시고 아래 코드 붙여넣기 합니다.
Option Explicit
Sub View_Color_Spell_Check_Err(SelRng As Range)
Dim Rng As Range
Dim arr() As String
Dim i As Long, j As Long
With Application.SpellingOptions
.IgnoreCaps = True
.IgnoreFileNames = True
.IgnoreMixedDigits = True
.KoreanCombineAux = True ‘ 이 부분 보조용언 붙여쓰기 추가
.KoreanProcessCompound = True ‘ 복합명사 처리 추가
End With
For Each Rng In SelRng
If Not Rng.HasFormula And VarType(Rng.Value) = vbString Then
arr = Split(Replace(Rng.Value, Chr(160), ” “), ” “)
j = 1
Rng.Font.ColorIndex = xlColorIndexAutomatic
For i = 0 To UBound(arr)
If Not Application.CheckSpelling(Word:=arr(i)) Then
Rng.Characters(j, Len(arr(i))).Font.ColorIndex = 3
End If
j = j + 1 + Len(arr(i))
Next i
End If
Next Rng
End Sub
Sub Spell_Correction()
Dim Rng As Range, SelRng As Range
Dim arr() As String
Dim i As Long, j As Long
With Application.SpellingOptions
.IgnoreCaps = True
.IgnoreFileNames = True
.IgnoreMixedDigits = True
.KoreanCombineAux = True ‘ 이 부분 보조용언 붙여쓰기 추가
.KoreanProcessCompound = True ‘ 복합명사 처리 추가
End With
‘ 현재 시트의 입력된 부분 선택
Set SelRng = ActiveSheet.UsedRange
‘ 셀에 지정된 형식 리셋
SelRng.ClearFormats
For Each Rng In SelRng
If Not Rng.HasFormula And VarType(Rng.Value) = vbString Then
arr = Split(Replace(Rng.Value, Chr(160), ” “), ” “)
j = 1
Rng.Font.ColorIndex = xlColorIndexAutomatic
For i = 0 To UBound(arr)
If Not Application.CheckSpelling(Word:=arr(i)) Then
Rng.Characters(j, Len(arr(i))).Font.ColorIndex = 3
End If
j = j + 1 + Len(arr(i))
Next i
End If
Next Rng
End Sub
그리고 문서 입력용 시트(예, Sheet1을 VBA Editor에서 더블 클릭하시고 아래 코드를 붙여 넣습니다.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Call View_Color_Spell_Check_Err(Target)
End Sub
이제 셀에 입력을 할 때 마다 맞춤법 검사를 하면서 오타나 복합명사, 보조용언이 잘못되면 셀이 단어가
아닌 문장이라도 잘못된 부분을 붉은색으로 보여줍니다. 색상을 필요하시면 ColorIndex를 바꾸어 가면서
편한 색상으로 사용하시면 됩니다.
위 코드를 보시면 아시겠지만 Sheet1의 내용이 변하면 지속적으로 체크를 하므로 대용량으로 삽입, 삭제 등의
변경이 일어나면 컴퓨터가 느려지므로 순수하게 Sheet1은 입력, 철자 체크용으로 사용 후 새 시트로 이동해서
문서 작업을 하시면 좋겠습니다.
제가 직접 만들 것이 아니라 팁으로 올리기는 그렇지만 수정, 보완을 해서 올리고 이 글을 읽는 또 다른 분이
조금이라도 업무에 도움이 되었으면 하는 마음에 올립니다.
첨부 화일 : 20150921-엑셀에서 실시간 철자 검사(Spelling Check)
By vinipapa • 무른모 • 0 • Tags: Spell Check, 실시간 철자 검사, 엑셀(EXCEL)