강좌 / 팁

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

2020.10.28 14:01

지후빠 조회:1891 추천: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 - - -
3840 윈 도 우| Gimagex를 이용하여 OS 통합하기 [17] gooddew 8182 11 02-23
3839 모 바 일| 모바일 공기계에서 카카오톡 이용하기 [19] 고양이2 12324 11 09-03
3838 윈 도 우| 만능 복구 USB 제작(1편) [33] ITforce 18476 11 05-03
3837 윈 도 우| Windows Embedded standard 7 sp1 제대로 설치하기 [8] FLP386 12677 11 02-25
3836 소프트웨어| 포토샵 기술 326가지(이미지파일) [18] DOS 11719 11 11-23
3835 윈 도 우| 윈도우의 불필요 파일 삭제 [18] 크림슨 13806 11 09-25
3834 소프트웨어| 하드에 grub 심기 [10] 카멜 7959 11 05-24
3833 윈 도 우| 속도 빠른 일본판 [N드라이브] 사용해보세요^^ [89] k-style 19578 11 04-28
3832 윈 도 우| Usb를 이용한 XP설치 [21] 고맙쥐 62289 11 10-23
3831 윈 도 우| [컴퓨터매니아의 컴퓨터 살펴보기] 1-(1) - MSDaRT 설치, ... [7] 컴퓨터매니 18759 11 01-20
3830 윈 도 우| grub2 로 부팅 단축키 설정하기 [7] gooddew 1982 11 01-27
3829 윈 도 우| 인터넷 연결/차단 토글입니다(win8 영문추가) [12] suk 19236 11 12-19
3828 소프트웨어| pureBasic 포인트 기본 이해 [3] 입니다 384 10 03-25
3827 소프트웨어| purebasic Macro 기본 [3] 입니다 446 10 03-25
3826 소프트웨어| 부팅항목숨기기,보이기-VHDman Lite0.0.8 [3] 카멜 573 10 03-06
3825 서버 / IT| 하드 디스크 사용시간 초기화 하기 [6] gooddew 2295 10 04-15
3824 윈 도 우| 윈도 에러 생길때, 모든 이벤트 로그 한꺼번에 보기 [10] zerojiddu 1275 10 06-23
3823 윈 도 우| Windows 11 설치 할 때 MS계정 로그인 스킵 [13] Corns7 3899 10 12-30
3822 윈 도 우| 파워쉘로 움직이는 .gif 바로 만들기 [6] zerojiddu 1004 10 06-18
3821 소프트웨어| Pecmd.ini 위치를 Windows폴더로 이동 [6] 카멜 756 10 02-10
XE1.11.6 Layout1.4.8