• 締切済み

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

  • Excelで検索マクロを作りたい

    Excelで検索マクロを作るのに Sub test01() Application.Dialogs(xlDialogFormulaFind).Show End Sub を記述しましたが検索画面で「半角と全角を区別する」にチェックが入ってしまっていますが、チェックがない状態で立ち上げるにはどうしたら良いでしょうか?

  • エクセル「検索と置換」の表示を消すマクロ

    エクセルの「検索と置換」を Application.Dialogs(xlDialogFormulaFind).Show で出現させて検索の作業をしています。 作業後に「検索と置換」の画面をマクロで消したいのですが どのようなコードになるでしょうか。 宜しくお願いいたします。

  • エクセル/組み込み検索ダイアローグで初期値の指定は?

    エクセルVBAで、 Application.Dialogs(xlDialogFormulaFind).Show で出てくる検索用の組み込みダイアローグですが、デフォルトで 検索方向を「列」 検索対象を「値」 半角全角を区別しない という設定にしたいのです。 どのように記述すればよいのでしょうか?

  • エクセルVBAでマクロなしのブックでマクロを使う方法

    タイトルが変ですが、こういうことです。 Sub serch() Application.Dialogs(xlDialogFormulaFind).Show ActiveCell.Value End Sub このコードは検索ダイアログを表示するものですが、これをマクロなしの様々なブックで使いたいのです。 何か方法があるでしょうか?

  • エクセル マクロ 検索 自動記録できない

    excel2003でマクロを作っていますが、  ファイルを立ち上げたときに自動的にファイル-編集-検索を実行し、 検索画面を起動するようにしたいので、その動作を自動記録しようとするのですが、記録できません。 過去の質問を見て、 Application.Dialogs(xlDialogFormulaFind).Show ↑これを使えば出来ると書いてありましたが、 少し古いエクセルの検索画面で、私が使いたいexcel2003の検索画面ではありませんでした。  どのようにすれば、検索画面をマクロで起動できるのでしょうか。 ご教示いただけますようよろしくお願いします。

  • imeの設定を教えてください。

    最近Win8を使い始めました。 IEなどを開くと、IMEがひらがな入力になっています。 基本的に半角英数を使いたいので、IMEがひらがなになってしまうと面倒です。 必要がある時だけひらがな入力に、通常は半角英数にしておきたいのですが、どなたか方法ご存じないでしょうか。

  • IMEツールバー

    IMEスタンダ-ドVer8を使っています。 突然「ひらがな」入力をしようとしたら KANAキ-がロック状態になってしまいました。 直接入力や半角英数だとロックは解除されるのですが・・・ どなたか直しかたを教えてください。

  • IME2000について・・・

    いままで半角全角ボタンを押すと、IME2000が開いて入力モードのところがひらがなになっていたのですが、突然開くたびに半角英数になってしまいました。 今は入力のたびにカタカナひらがなボタンを押してひらがなにしています。 IMEをひらいたときに初めからひらがなモードに設定するにはどうしたらいいのですか?よろしくおねがいします。

  • excelでマクロが思うように動きません

    EXCELでのマクロを使った文字列検索についてお尋ねします。 EXCEL2003のシートにフォームボタンを設置し、そのボタンに 以下のマクロを設定しています。 ここから--------------------------------------------- Sub 検索() Cells.Select Application.Dialogs(xlDialogFormulaFind).Show End Sub ここまで--------------------------------------------- ボタンをクリックすると、検索ダイヤログが開き、任意の文字列を 検索できるのですが、別シートまで検索してしまいます。 【希望1】検索対象をアクティブシートのみにしたい。 表示される“検索ダイヤログ”では、以下項目が設定可能ですが、 1.検索する文字列 2.検索方向 3.対象 4.大文字と小文字を区別 5.完全に同一なセルだけを検索 6.半角と全角を区別 【希望2】変更可能な以下の項目を固定(変更できないように)したい。 2.は“列”に固定 3.は“値”に固定 4.5.6.はチェックボックスでon/offできるようになっていますが、  全てoffに固定 【希望3】出来れば検索ダイヤログには1.の“検索する文字列”欄と、 “次を検索”ボタン、“閉じる”ボタンの3つだけを表示したい。 このような希望を満たすマクロは作成可能でしょうか? おわかりの方がいらっしゃいましたら、ご教授ください。 よろしくお願い致します。

  • 検索マクロの終了について

    台帳からの検索方法として、ご教示いただいた下記のマクロを使用させていただいていますが、検索終了後において、「閉じる」か「×」をクリックし検索を終了させないと先にすすみません。 この、「閉じる」か「×」のクリックをしないで、何処でもセルをクリックすると検索が終了するようには出来ないものでしょうか。 チョッとしたことですが、検索行為の度に、非常に不便に感じております。 どなたか、よろしく、お願いいたします。 Sub Sample1() ' // ダミー検索 ' // MatchByte:全角・半角を区別する Range("A8:C1700").Select ActiveCell.Find What:=ActiveCell.Value, _ LookIn:=xlValues, _ LookAt:=xlPart, _ SearchOrder:=xlByRows, _ MatchByte:=False ' // 検索ダイアログ表示 Application.Dialogs(xlDialogFormulaFind).Show End Sub

専門家に質問してみよう