![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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でもあるはずです。
この回答への補足
さっそくのご回答ありがとうございました。IME制御はフォームで利用します。その際、SendKeysで日本語を送るのですが、IME2003では「直接入力」にしないと文字化けしてしまうため、APIで制御したいとうニーズになります。なお、ウインドウハンドルとIMEコンテキストの取得は成功できていて、半角英数やひらがな入力などに制御する方法は成功しております。ちなみに、IME2007では「直接入力」がなくなっていて半角英数にすると文字化けしないことまで確認できています。したがって、フォームでIME2003をAPIで「直接入力」モードに設定したいのですが、可能でしょうか?どうぞよろしくお願いします。
補足日時:2010/06/24 16:55お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル バーコード作成で他のシートを参照するには? 2 2023/05/03 16:57
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- その他(AV機器・カメラ) デジタル音楽にかけるエフェクトの仕組みについて教えて下さい。 たとえば『イコライザー』のように、周波 3 2023/03/06 18:30
- Visual Basic(VBA) 重複したデータ(空白は除く)のVBA表記について 5 2022/08/15 12:41
- 情報処理技術者・Microsoft認定資格 2進数の問題を教えてください。 1 2022/07/27 09:42
- Windows 10 古いPC(Inspiron 13 1370)にWin10インストール可能ですか? 6 2022/06/01 09:11
- その他(開発・運用・管理) おんどとりWebStorage APIから温度情報を取得し表示したい 2 2023/08/03 09:53
- 工学 疑似乱数生成器 3 2023/01/05 02:06
- Excel(エクセル) エクセル関数について 8 2023/06/28 17:04
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【ExcelVBA】全シートのセルの...
-
ブック名、シート名を他のモジ...
-
VBAで同じシート名のコピー時は...
-
Excel チェックボックスにチェ...
-
別のシートから値を取得するとき
-
実行時エラー'1004': WorkSheet...
-
ExcelVBA:複数の特定のグラフ...
-
【VBA】色のついたシート名を取得
-
コマンドボタンをクリックでシ...
-
excelのマクロで該当処理できな...
-
特定の文字を含むシートだけマ...
-
ユーザーフォームに入力したデ...
-
セルの値によって、シート見出...
-
IFステートの中にWithステート...
-
エクセルVBAでダブルクリックを...
-
XL:BeforeDoubleClickが動かない
-
Excelマクロのエラーを解決した...
-
エクセル・マクロ シートの非...
-
【エクセル】オプションボタン...
-
シート名をフォルダ名に変更
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
VBAで大量のファイルをシート名...
-
ユーザーフォームに入力したデ...
-
excelのマクロで該当処理できな...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
VBA 存在しないシートを選...
-
Excelマクロのエラーを解決した...
-
特定の文字を含むシートだけマ...
-
実行時エラー'1004': WorkSheet...
-
XL:BeforeDoubleClickが動かない
-
シートが保護されている状態で...
-
実行時エラー1004「Select メソ...
-
【Excel VBA】Worksheets().Act...
-
ブック名、シート名を他のモジ...
-
エクセルのシート名変更で重複...
-
ExcelのVBAのマクロで他のシー...
-
Excel VBA 複数行を数の分だけ...
-
エクセルのマクロについて教え...
-
VBA 最終行まで数式をコピーする
おすすめ情報