강좌 / 팁

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

2020.10.28 14:01

지후빠 조회:1906 추천: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 - - -
190 소프트웨어| PE에서 AOMEI Backupper 백업안되는 문제 해결방법 [50] 지연서연아 6066 12 10-07
189 소프트웨어| VirtualBox에서 macOS 설치하기 [10] VenusGirl 2627 12 01-18
188 소프트웨어| 한 폴더의 Wim 동시에 등록하기 [5] 카멜 1778 12 07-29
187 소프트웨어| PC이름, 작업그룹, IP주소 변경 VBScript with VTool [13] 지후빠 1612 12 09-07
186 소프트웨어| utorrent 간단 사용법 [3] 간장종지646 2535 12 01-11
185 소프트웨어| 한글2022 원클릭 설치하기.......CraXicS님 덕분에 가능해... [4] 밤이슬216 6658 12 02-07
184 소프트웨어| [포토샵] 이중턱 보정 하기 [4] 무월 1989 12 04-03
183 소프트웨어| 마우스 두개 양손 사용시 왼손 마우스 버튼 스왑 [7] 지후빠 1224 12 12-24
182 소프트웨어| (ver 0.2) 크롬/엣지에서 URL 드래그 드롭으로 제목 얻기 [11] 메리아 1057 12 02-08
181 소프트웨어| WimLib Api 백업.복원 미완성. 샘플 7가지. [10] 입니다 1016 12 03-27
180 소프트웨어| VMWare 를 이용한 VHD 구동테스트 방법 [7] 타천사둘리 1103 12 05-17
179 소프트웨어| RSMBRTool로 숨김파티션(EISA) 이용하기 [36] 하늘보기 16355 13 05-11
178 소프트웨어| 마우스제스처 StrokeIt 사용법 - (본문 수정) [35] 고양이2 5179 13 12-17
177 소프트웨어| 포토샵 기술 326가지 [24] DOS 6578 13 11-30
» 소프트웨어| 엑셀(64bit) 시작시 기본 한글 입력모드로 VBA [17] 지후빠 1906 13 10-28
175 소프트웨어| PE 해상도 변경하기 [5] 좋은이웃 2291 13 04-01
174 소프트웨어| imageres.dll shell32.dll icon index 복사.ahk [8] 지후빠 1411 13 08-21
173 소프트웨어| [포토샵] 소실점 그리드로 이미지 합성 [5] 무월 1046 13 04-03
172 소프트웨어| [포토샵] 배니싱 포인트 텍스트 왜곡 배치 [10] 무월 1157 13 04-12
171 소프트웨어| [포토샵] 다중 개체 선택 지우기 액션 [4] 무월 912 13 04-03
XE1.11.6 Layout1.4.8