• 締切済み

IMEを制御するマクロについて教えてください

エクセルを開いて、検索ボタンをクリックするとエクセルの検索ウインドが開くマクロを組みました。 Application.Dialogs(xlDialogFormulaFind).Show それで、この検索ウインドに入力する文字は日本語しか想定してないので、自動的にIMEをデフォルトの半角英数から、ひらがなに変更させるマクロを組みたいのですが、私は全くのド素人のためさっぱりわかりません。 どなたかお手数ですが教えてください。よろしくお願いいたします。

みんなの回答

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.2

Win32APIのImmSetConversionStatus関数等を使用することになるかと思います。 例えば、こんな感じで如何でしょうか。 '----- 標準モジュールの (Declarations)に記述 APIの宣言等 Declare Function ImmGetContext Lib "imm32.dll" (ByVal hwnd As Long) As Long Declare Function ImmSetOpenStatus Lib "imm32.dll" _   (ByVal himc As Long, ByVal b As Long) As Long Declare Function ImmGetConversionStatus Lib "imm32.dll" _   (ByVal himc As Long, lpdw As Long, lpdw2 As Long) As Long Declare Function ImmSetConversionStatus Lib "imm32.dll" _   (ByVal himc As Long, ByVal dw1 As Long, ByVal dw2 As Long) As Long Declare Function ImmReleaseContext Lib "imm32.dll" _   (ByVal hwnd As Long, ByVal himc As Long) As Long Public Const IME_CMODE_ALPHANUMERIC = &H0 Public Const IME_CMODE_NATIVE = &H1 Public Const IME_CMODE_KATAKANA = &H2 Public Const IME_CMODE_FULLSHAPE = &H8 Public Const IME_CMODE_ROMAN = &H10 '----- Sub Test() Dim result As Long Dim lpdw As Long Dim lpdw2 As Long Dim himc As Long himc = ImmGetContext(Application.hwnd) result = ImmSetOpenStatus(himc, -1&) result = ImmGetConversionStatus(himc, lpdw, lpdw2) lpdw = IME_CMODE_NATIVE + IME_CMODE_FULLSHAPE + IME_CMODE_ROMAN result = ImmSetConversionStatus(himc, lpdw, lpdw2) Application.Dialogs(xlDialogFormulaFind).Show result = ImmSetOpenStatus(himc, 0&) result = ImmReleaseContext(Application.hwnd, himc) End Sub

key3jyan
質問者

お礼

丁寧なアドバイス本当にありがとうございます。 内容に関してはさっぱり分かりませんが、とりあえずコピーしてやってみます。あなたは天才ですか? とにかくありがとうございました。

  • oyajidayo
  • ベストアンサー率33% (57/171)
回答No.1

あまり、積極的な方法ではないので、他の方のほうが よりすっきり正解が出るとは思うのですが。 この際全くの度素人なら、 セル範囲をドラッグして 入力規則から日本語コントロールを指定。 一連の操作をマクロの自動記録で保存。 先に作ったマクロとドッキング。 いかが?

key3jyan
質問者

お礼

アドバイスありがとうございます。 こんな簡単なことでも良く分かりませんが、明日がんばってやってみます。ありがとうございます。

関連するQ&A