강좌 / 팁

소프트웨어 엑셀(64bit) 시작시 기본 한글 입력모드로 VBA

2020.10.28 14:01

지후빠 조회:1875 추천:13

안녕하십니까? 요즘 집사람 오더를 받아 엑셀 VBA 제작에 집중하고 있어 윈포를 자주 못 봤습니다.

 

얼마전 폰으로 잠깐 봤을때 엑셀 시작시 기본 한글 입력모드로 만들어주는 추가기능을 찾는 질문이 있었습니다.

아침에 찾아보니 그 게시물을 못 찾겠습니다. 혹시 게시물 위치 아시는 분 계시면 링크 부탁드립니다.

 

오피스 64bit 나오면서 VBA에서 win32api 선언에 64bit 형식이 추가되어서 기존 32bit용을 64bit에 사용시 오류가 납니다.

구글에서 vba win32api 64bit 로 검색하면 정보를 얻을 수 있습니다. 구글 검색 보기

 

이미 32bit용으로 만드신 분이 계십니다.

https://www.officetutor.co.kr/board/DType/bfrmvw.asp?f_tn=Dqa_excel_n2&f_bno=118357&page=58

 

저는 64bit용 선언부만 추가 하였고 한글, 영어 선택이 쉽도록 lang = "KO" 부분을 추가 하였습니다.

한글로 쓰기 위한 것이라 의미는 없겠지만 원본을 존중하는 차원에서...

 

추가 기능 설치는 파일 - 옵션 - 추가 기능 - 이동 - 찾아보기... 로 추가하시면 됩니다. 한글로시작v0.1.1.xlam

엑셀 2016 64bit 에서 테스트 되었습니다. 32bit에서 테스트(댓글에 결과) 부탁드립니다.

 

아래는 코드 부분인데 PtrSafe 추가 되는 것이 핵심입니다. ^^


Option Explicit

 

#If VBA7 Then

    Private Declare PtrSafe Function GetActiveWindow Lib "user32.dll" () As Long

    Private Declare PtrSafe Function ImmGetContext Lib "imm32.dll" (ByVal hwnd As Long) As Long

    Private Declare PtrSafe Function ImmGetConversionStatus Lib "imm32.dll" (ByVal himc As Long, lpdw As Long, lpdw2 As Long) As Long

    Private Declare PtrSafe Function ImmSetConversionStatus Lib "imm32.dll" (ByVal himc As Long, ByVal dw1 As Long, ByVal dw2 As Long) As Long

#Else

    Private Declare Function GetActiveWindow Lib "user32.dll" () As Long

    Private Declare Function ImmGetContext Lib "imm32.dll" (ByVal hwnd As Long) As Long

    Private Declare Function ImmGetConversionStatus Lib "imm32.dll" (ByVal himc As Long, lpdw As Long, lpdw2 As Long) As Long

    Private Declare Function ImmSetConversionStatus Lib "imm32.dll" (ByVal himc As Long, ByVal dw1 As Long, ByVal dw2 As Long) As Long

#End If

 

Private Sub Workbook_Open()

 

    Dim himc          As Long

    Dim dwConversion  As Long

    Dim dwSentence    As Long

    Dim rc            As Long

    Dim temp          As Long

    Dim lang          As String

    

    lang = "KO" '한글 KO, 영어 EN

    

    himc = ImmGetContext(GetActiveWindow())

    rc = ImmGetConversionStatus(himc, dwConversion, dwSentence)

    

    If rc <> 0 Then

        temp = dwConversion

        temp = temp And &H1

        If temp <> &H1 Then

            If lang = "KO" Then

                dwConversion = dwConversion Or &H1  '한글로 시작

            Else

                dwConversion = dwConversion And &HFFFE  '영문으로 시작

            End If

            rc = ImmSetConversionStatus(himc, dwConversion, dwSentence)

        End If

    End If

 

End Sub

 

번호 제목 글쓴이 조회 추천 등록일
[공지] 강좌 작성간 참고해주세요 gooddew - - -
4319 소프트웨어| 단순한 팝업 메뉴형 런처 PopSel (실컴,PE) [18] 지후빠 2449 26 03-30
4318 기 타| IPv6 전용 네트워크에서 윈도우 포럼 접속하기 네트워크빌 2004 2 03-27
4317 소프트웨어| 구글 캘린더로 매년 X월의 Y번째 요일에 반복 설정하기 asklee 936 2 03-26
4316 소프트웨어| [펌]VirtualBox 로컬 드라이브 연결하기 [2] 타천사둘리 1282 9 03-23
4315 윈 도 우| PC 나 노트북 종료시 전원차단 안 될 때 조치방법 [6] 타천사둘리 2861 6 03-21
4314 윈 도 우| Wifi 패스워드 (종료!!!) [27] kernel 6061 19 03-12
4313 소프트웨어| 배치파일로 2GB 이상 계산과 batch hybrid [7] 지후빠 1398 13 03-05
4312 소프트웨어| 팁: VirtualBox 7의 Windows 10/11에서 NVMe 드라이버 활성... [3] VᴇɴᴜꜱGɪ 1188 9 03-05
4311 윈 도 우| 구글 검색 결과를 가장한 리다이렉션 광고 링크 제거하기 (... [11] 오호라7 4071 25 02-26
4310 하드웨어| USB 3.0 과 2.4GHz 간섭 문제 해결 - 동글을 연장선연결 [8] 메리아 2993 12 02-25
4309 윈 도 우| 윈도우 업데이트 다운로드 및 설치 오류 조치 [6] 미스라 3618 5 02-17
4308 소프트웨어| (ver 0.2.3, url 파일기능) 크롬/엣지에서 URL 드래그 드롭... [7] 메리아 2900 10 02-16
4307 모 바 일| 뉴진스 음악에서 보컬만 추출하기? 이거 하나면 끝!!! | mp... toz21 1886 0 02-14
4306 윈 도 우| IE 강제 실행 스크립트 + 탭 여러개 열기 [6] 녹색조각 2628 14 02-14
4305 기 타| 파이어 폭스 무설치 만들기 [17] 슈머슈마 1559 9 02-12
4304 윈 도 우| 향상된 윈도우 자동 로그인 On/Off 스크립트 [6] zerojiddu 2727 13 02-11
4303 소프트웨어| 현존 최강 무료 동영상 편집기 소개 및 활용법 안내 | 이게... [13] toz21 2666 7 02-11
4302 소프트웨어| Pecmd.ini 위치를 Windows폴더로 이동 [6] 카멜 750 10 02-10
4301 소프트웨어| (ver 0.2) 크롬/엣지에서 URL 드래그 드롭으로 제목 얻기 [11] 메리아 1038 12 02-08
4300 윈 도 우| 파일을 디펜더가 차단할때, 파워쉘로 허용시키기 [7] zerojiddu 1729 14 02-06
XE1.11.6 Layout1.4.8