• ベストアンサー

API関数ImmSetConversionStatus のビットセット

API関数ImmSetConversionStatus のビットセットを組み合わせて、IME2003の「直接入力」モードに 設定することは可能でしょうか?いろいろ試してみたのですが、うまくいかないので質問しました。ご存知の方がおられましたら、よろしくお願いします。 Vista エクセル2007 VBA

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

IMEのOFFを、エクセルのシートで利用するのでしょうか?フォームで利用するのでしょうか? わからなかったので、シートでのIME制御例として説明しています。 ってかシートであれば、APIを利用しないでも出来てしまいますが^^;; 一応余談として、最後に載せてます。 プログラミングとしては、以下の3工程を行ってください。 ------------------------------------ ※1.み~くんパパの仕事部屋(旧)より http://www.mitene.or.jp/~sugisita/vb6_ime.html の 「IMEのON/OFF」 を解凍 ------------------------------------ ※2.解凍した中から標準モジュール2本 ・mIMM ・mWin32API をエクセルのプロジェクトに追加 ------------------------------------ ※3.ワークシートのマクロとして以下のコードをコピペ Sheet1のマクロにこれを張ると、セルを移動するたびにIMEの状態が切り替わります。 フォームに張るのであれば、カスタマイズしてください。 Option Explicit Private Declare Function GetActiveWindow Lib "USER32" () As Long Private Sub Worksheet_SelectionChange(ByVal Target As Range)   Dim hwndIME As Long   Dim hIMC  As Long   Dim blnIME As Long      Dim l_hWnd As Long   l_hWnd = GetActiveWindow()      ' IMEのデフォルトウィンドウの取得   hwndIME = ImmGetDefaultIMEWnd(l_hWnd)   If hwndIME Then     ' IMEコンテキストの取得     hIMC = ImmGetContext(hwndIME)     If hIMC Then       ' 現在のIMEのON/OFF状態を取得       blnIME = ImmGetOpenStatus(hIMC)       ' ON/OFFを切り替える       Call ImmSetOpenStatus(hIMC, Not blnIME)       ' IMEコンテキストの開放       ImmReleaseContext hwndIME, hIMC     End If   End If End Sub --------------- ※.余談 シートのIMEの制限であれば メニューバーより → データ(D) →→ 入力規則(L) →→→ 日本語入力 で、Excel2003以下では制限を加えることも出来ます。 リボン形式のメニューからの操作手順は、こちらではわかりませんが、、、 入力規則機能は2007でもあるはずです。

neo1124
質問者

お礼

サンプルを動かしてみて理解できました。IMEをOFFにすれば直接入力になるのですね!どうもありがとうございました。

neo1124
質問者

補足

さっそくのご回答ありがとうございました。IME制御はフォームで利用します。その際、SendKeysで日本語を送るのですが、IME2003では「直接入力」にしないと文字化けしてしまうため、APIで制御したいとうニーズになります。なお、ウインドウハンドルとIMEコンテキストの取得は成功できていて、半角英数やひらがな入力などに制御する方法は成功しております。ちなみに、IME2007では「直接入力」がなくなっていて半角英数にすると文字化けしないことまで確認できています。したがって、フォームでIME2003をAPIで「直接入力」モードに設定したいのですが、可能でしょうか?どうぞよろしくお願いします。

関連するQ&A

  • APIの関数名と定数の調べ方を教えてください

    VBAから Windows32APIの学習を始めたばかりの初心者です。作成しようとするプログラムに必要なAPI関数名とその関数を使用するにあたっての設定すべき定数名を調べる方法(辞書などの本やWebは問いません)がありましたら教えてください。よろしくお願いします。

  • API関数DrawTextのテキストを消す方法

    API関数DrawTextで描画したテキストを消す方法がわかりません。 現在探しているのですが、いまいち見つかりません。 どなたか知っていたらご教授お願いいたします。 ちなみに開発環境はエクセルのVBAをです。

  • APIって何でしょうか?

    APIって何でしょうか? こんばんわ。 無知ですみませんが、APIって何ですか? Wikiなどで説明を読みましたが、分かりませんでした。 ・APIの役割って何でしょう? ・APIがなぜあるのか? ・関数コールと違うのか? ・APIが無いとどうなるのか? ご存知の方、教えてください。 (お礼が遅くなるかもしれませんがお願い致します)

  • Excel VBA API

    質問させて頂きます。 Excel 2003 VBAで天気予報のAPIは使用可能でしょうか? また可能であるならば、どのようにすれば良いのか教えていただきたいです。 よろしくお願いします。

  • WinAPIで日本語入力モード(倍角等)から

    通常入力モード(半角アルファベット)にするにはどうしたら言いのでしょうか? それができるAPI関数が有れば教えてください IMEやATOKなどFepの種類を問わずにできればいいのですが・・・

  • APIについて

    文字列をsjisからjisに変換して、 byte型に格納しているのですが dim data() as byte data()をapi関数に渡しているのですが、 apiに渡すときに、apiでの定義は bdata as byte となっていて、バッファを送信するとあります。 この場合、渡す方法としては、data()の配列数分のloopを 行い、1つずつ渡していく方法になるのでしょうか? よくわからない質問かも知れませんが、ご存知の方がいらっしゃいましたらよろしくお願いします。

  • エクセルでの関数の表記について

    よろしくお願いいたします。エクセルでランクをつけるとき、例えば=RANK(A1,A1:A5)などのように入力すると思います。何台かあるコンピュータのうち、一台のエクセルだけ=RANK(A1;A1:A5)となります。関数の区切りがカンマでなくセミコロンになってしまいます。この1台のエクセルを通常のようにカンマで関数を区切りたいのですが,エクセルにそのような設定個所はありますか?関数を直接入力しなければいいのですが,直接入力した場合カンマではエラーになってしまうのでどなたかお詳しい方お教えください。

  • エクセルVBAでIME入力モードの制御

    エクセルVBAでIME入力モードの制御について教えてください。 Sub IMEの現在の状態() 状態 = IMEStatus() MsgBox 状態 & "です", vbInformation, "IMEの現在の状態" End Sub これでIMEStatus関数の戻り値が 1 オンの状態 2 オフの状態 4 全角ひらがな入力モード 5 全角カタカナ入力モード 6 半角カタカナ入力モード 7 全角英数入力モード 8 半角英数入力モード であることがわかりましたが、逆にIMEの状態を設定するにはどのように記述すればいいのでしょうか? たとえば、Sheets("AAA").Range("B1:B20")は「半角英数入力モード」にする場合。 DialogSheets("GGG")のダイアローグを呼び出したとき、その中のEditboxes("HHH")には「全角ひらがな入力モード」。 などです。 よろしくお願いします。

  • Excelでセルに入力するとVBA関数が呼び出される

    標記件、あるExcelファイルでセルに入力を行うと、入力後にVBAのある関数が自動で呼び出されるのですが、どこでこの設定を行う事ができるのでしょうか? VBAをOPENし、"ThisWorkbook"と"Sheet"内を開いても、何も記述はありません。通常はここで設定を行うと思うのですが・・・ (SelectionChangeなどで。) なお、呼び出される関数は、標準モジュール内に入っています。 以上、よろしくお願い致します。

  • 64bitのLinuxOSでWinelibを使って64bitのメモリ空間を使えますか?

    質問場所が違うかもしれませんが、 Winelibを使って簡単なWin32のAPI関数を含んだコード(MFCなどは含まず)を 64bitのLinuxOS上に移植したいと思います。 このとき、64bitのメモリ空間を使いたいのですが可能でしょうか? 64bitのLinuxOSは具体的にはTurbolinux 8 for AMD64です。 なにか情報があればお教えください。