강좌 / 팁

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

2020.10.28 14:01

지후빠 조회:1872 추천: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 - - -
4369 윈 도 우| 운영체제 설치 후 해주면 좋은 팁 [23] 윈도우즈 27311 6 09-22
4368 윈 도 우| 윈도우7 드라이버 자동설치 망고 만들기 [34] 난이나 팔 27276 0 03-27
4367 윈 도 우| winpe.wim, install.wim에 컴퓨터 드라이브 통합하기. [4] Windows8 27158 2 01-16
4366 윈 도 우| Windows 10 을 upgrade 없이 설치하고 단박에 인증 ! [38] kwoods 27072 21 09-05
4365 윈 도 우| 윈도우 8 설치 후 검은 화면 현상 해결하기 [7] 이이연 27001 2 10-29
4364 하드웨어| 새로운 인증을 위한 인증제거(AI사용) [33] 왔따다 26995 0 02-23
4363 하드웨어| AI 2010 버전들 그림으로 간략 설명(재수정) [19] 왔따다 26884 0 12-31
4362 하드웨어| 내컴퓨터에 OS X 설치하자!! AMD도 가능 (VMware7.1) [14] 이건뭔가요 26809 0 07-03
4361 윈 도 우| 최고관리자 권한(TrustedInstaller)얻기 [26] ITforce 26800 3 04-03
4360 윈 도 우| iGoogle 19금 검색 엔진 추가 방법 [ChromePlus 기준] [11] DaGolBin 26760 0 08-08
4359 기 타| 구글 드라이브 다운로드 초과했을 때 다운로드 방법 [41] suk 26721 49 11-19
4358 윈 도 우| 8. 프로그램 설명 - 설치형, 포터블, 드라이버, MS 인증툴 [2] 공피 26590 0 02-14
4357 소프트웨어| wim파일 추출(export) - rsimagex.exe 이용 [8] 카멜 26547 7 09-02
4356 하드웨어| 전화 단자함 활용하자 [22] gooddew 26453 0 04-04
4355 윈도우 7내장백업기능 200%활용하기..고스트,트루이미지는 ... [51] 랜디로즈 26452 4 09-22
4354 하드웨어| INTEL 메인보드 SLIC 2.1 입력하기 [22] 파블로프의 26374 2 08-27
4353 하드웨어| 구글 크롬 7 에서 GPU가속 활성화하기 [25] 초코맛단지 26323 1 09-18
4352 윈 도 우| 나만의 PE를 만들자 실전편 1탄(윈도우 10PE빌드하기) [173] 지연서연아 26235 50 08-27
4351 소프트웨어| 금영노래방 사용법 [13] X_man 26022 0 03-05
4350 소프트웨어| SSD 그리고 토렌트 Primo Ramdisk [52] 고맙쥐 25988 5 10-03
XE1.11.6 Layout1.4.8