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

こんにちは。先日ワードでタイマーを設定する方法を
教えて頂いた者です。

http://oshiete1.goo.ne.jp/kotaeru.php3?q=2005982

コマンドボタンをクリックし、設定時間が来ると自動的にメッセージボックスが出て文章の保護をかけるという設定です。
設定はうまくいったのですが、コマンドボタンをクリックしたあとに入力を始めると、文字入力がうまくいきません。「あいうえお」は入力出来ますが、「かきくけこ」や「さしすせそ」などが「KあKいKうKえKお」や「SあSいSうSえSお」になってしまいます。

コマンドボタンに設定したコードは次の通りです。

Private Sub CommandButton1_Click()

Static isClick As Boolean

If Not isClick Then
isClick = True
SendKeys "%({E})", False
SendKeys "+({L})", False
SendKeys "{HOME}", False
Pause 10
MsgBox "作業を終了して下さい。"
isClick = False
ActiveDocument.Protect Password:="hokuden", NoReset:=False, Type:= _
wdAllowOnlyComments
End If
End Sub

Public Sub Pause(ByVal PauseTime As Double)
Dim E As Double

E = Timer + PauseTime
Do While Timer < E
DoEvents
Loop

End Sub

日本語入力を正しく入力できるようにするのはどうすればいいでしょうか?

よろしくお願い致します。

A 回答 (3件)

こんばんは。



いくつか方法を探ってみましたが、ご指摘のマクロは、私のように、JISかな入力の者には問題ないのですが、ローマ字変換をする人たちにとっては、1文字入力するたびに、マクロでIMEに割り込みが入ってしまうので、二文字として途切れてしまいます。

私は、前回の時に、OnTimeメソッドの方法を探していたのですが、今度は、逆に、変換中は、マクロが割り込みできないという不都合で、経過時間を過ぎても、Enterを入れない限りは、マクロで終了合図が出ないというので、結果的にはやめました。

外部から、IME制御という方法もないわけではありませんが、そういう方法は、イレギュラーで、PCの全体の環境に左右されやすいのです。

テキストボックスのような環境でしたら、一文字ずつ監視して、おそらくは可能だと思いますが、Wordのドキュメント上では、今のところ分らないのです。Wordのドキュメント には、Excelのような豊富なイベント(入力監視)モードがありません。

最初の話にもどって、他のツールをお探しになったほうが無難だと思います。Word上では、個人の自主申告に任せるぐらいしかないように思います。

この回答への補足

丁寧で分かりやすい回答、ありがとうございます。

>マクロでIMEに割り込みが入ってしまうので、
>二文字として途切れてしまいます。

IMEに割り込みが入ってしまうとは思いもよりませんでした。さすがにIME制御するわけにはいきませんね。(泣)

私の自宅にあるPCはWord2000、IME2000ですが、友人のPCはWord2003、IME2003だったので試しに開いて実行してもらいました。するとWord2003ではちゃんと動くんです!
文字もちゃんと認識して変換もできますし、ますます訳が分かりません。Word2003ではIMEに関係なくマクロを実行できるんでしょうか?
それともIMEの入力方式「スタンダード」「ナチュラルインプット」に関係あるのでしょうか?

補足日時:2006/03/06 22:42
    • good
    • 0

こんにちは。

Wendy02です。

コントロールツールのコマンドボタンとテキストボックスで、方法を考えてみました。
KeyUp イベントで、時間が経つと、次の入力が不可能になります。当初のイメージとはだいぶ違ったものになりますが、目的は可能です。(テキストボックスの枠線が取れれば、イメージとしては、よくなるのですが。プロパティで、いろいろ調整してみてください。)

注意:コマンドボタンを貼り付けて、Enter を押して、パラグラフを換えてから、テキストボックスを設置してください。テキストボックスから作ったら、コマンドボタンがなかなか入りませんでしたる

フォントの大きさにもよりますが、画面一杯に入れるというのは不可能だと思います。2分ですと、どんなにがんばっても、500文字を超える人はいないと思います。1ページ満杯で、だいたい、1200字だったかな?

もちろん、本格的な入力検査は、専門のツールのほうがよいのです。
2分経って、キーを入力して、それを上げたとたんに、終了が入ります。

'ThisDocument に貼り付けて使います。
'------------------------------------------------
Dim StopFlg As Boolean
Private Sub CommandButton1_Click()
Dim StartTime As Date
Dim LastTime As Date
StartTime = Now()
StopFlg = True
LastTime = StartTime + TimeValue("00:02:00")
Application.OnTime LastTime, "ThisDocument.CheckMode"
'テキストボックス設定
With TextBox1
  .Enabled = True
  .MultiLine = True
  .EnterKeyBehavior = True
  .BorderStyle = fmBorderStyleNone
  .Text = ""
  .SelStart = 1
  .AutoSize = False
End With
End Sub

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 TextBox1.Enabled = StopFlg
End Sub
Sub CheckMode()
 StopFlg = False
 MsgBox "2分経ちました。終了です!"
End Sub
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2006/03/09 15:46

#1 のWend02です。



>Word2003ではIMEに関係なくマクロを実行できるんでしょうか?

きちんと、最後に、終了の合図が出たのですか?
もし、そうでしたら、たぶん、まったく違う構造なのでしょうね。私には分りません。

>IMEの入力方式「スタンダード」「ナチュラルインプット」に関係あるのでしょうか?
これも分りません。

Wordに関して、もう少し詳しい方もいらっしゃるかもしれませんが、Word上で、働かせるツールというもの自体、私は知らないです。

一般的に入力スピードを検定するようなソフトというのは、もともと、キーボードから直接信号を取っていますから、Wordのように一般文字入力をする仕組みとはだいぶ違っています。私に言えるのは、このぐらいです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

Wordのバージョンによって構造が違うのかもしれませんし、Wordを使ってタイピングチェックすること自体が厳しいのかもしれませんね。
もう少しいろいろ試してみて、どうしてもできない場合はタイピングソフトの導入も検討してみようと思います。

貴重なお時間を使って頂いてありがとうございます。
もうちょっとがんばってみます!!

お礼日時:2006/03/07 00:23

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