강좌 / 팁

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

2020.10.28 14:01

지후빠 조회:1877 추천: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 - - -
801 소프트웨어| OCR(문자 인식) 활용 & 자작 프로그램 [12] 바이바이 2775 17 11-16
800 소프트웨어| 리얼텍 오디오 드라이버 무한반복 설치 방지 방법 [2] 좋게멋지게 4108 7 11-15
799 소프트웨어| Resource Hacker™ 5.1.8 - 리소스 수정 설명 [5] VₑₙᵤₛG 1106 11 11-15
» 소프트웨어| 엑셀(64bit) 시작시 기본 한글 입력모드로 VBA [17] 지후빠 1877 13 10-28
797 소프트웨어| MS Office 2019 에서 VBA(visual basic) 사용 팁 오호라7 2011 5 10-27
796 소프트웨어| 배치파일로 각종 대화상자 만들기 (The Wizard's Apprentice) [4] 히이이잌 1915 11 10-27
795 소프트웨어| 엑셀 활용하여 배치파일 만들기 [7] 히이이잌 2592 11 10-24
794 소프트웨어| upx 언패킹 강좌 입니다 [15] 줄리아니 2236 8 10-21
793 소프트웨어| FASTKEYS 런처 기능 소개 BecauseI 1524 6 10-10
792 소프트웨어| VHD 교차 부팅으로 순간 복구 구현하기 [14] gooddew 2469 20 10-10
791 소프트웨어| "열기/다른 이름으로 저장" 창에서 빠른 경로 변... [8] 지후빠 1651 15 10-09
790 소프트웨어| 오토핫키로 명령 프롬프트 실행하기 스크립트 [4] 미유키로즈 930 8 09-25
789 소프트웨어| DISM++ 로 부팅 오류 복구하기 [13] gooddew 2372 16 09-21
788 소프트웨어| 데이터 손실 없이 동적 디스크를 기본디스크로 변경하기 [3] gooddew 2193 11 09-19
787 소프트웨어| aida64 보고서 작성 기능 배치파일 활용 [3] 히이이잌 690 7 09-15
786 소프트웨어| ventoy HDD/SSD 외장하드에 설치 꼼수 [7] 메인보드 3372 15 09-10
785 소프트웨어| ventoy "ventoy.json" 정리한것 (2차) [18] 메인보드 3087 16 09-09
784 소프트웨어| RSImigex 로 UEFI 부팅 복구하기 [8] gooddew 2573 20 09-08
783 소프트웨어| [update v1.1] PC이름, 작업그룹, IP주소 변경 [24] 지후빠 1770 10 09-07
782 소프트웨어| PC이름, 작업그룹, IP주소 변경 VBScript with VTool [13] 지후빠 1588 12 09-07
XE1.11.6 Layout1.4.8