プロが教える店舗&オフィスのセキュリティ対策術

エクセルを開いて、検索ボタンをクリックするとエクセルの検索ウインドが開くマクロを組みました。
Application.Dialogs(xlDialogFormulaFind).Show

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

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/06/10 00:06

あまり、積極的な方法ではないので、他の方のほうが


よりすっきり正解が出るとは思うのですが。

この際全くの度素人なら、
セル範囲をドラッグして
入力規則から日本語コントロールを指定。
一連の操作をマクロの自動記録で保存。

先に作ったマクロとドッキング。

いかが?
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/06/10 00:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!