• 締切済み

word2007 でescキーが押された場合の処理を指定できませんか?

Word VBAの初心者です。マクロの実行中にescキーが押された場合の処理を、こちらで指定することはできますか?Excelですと  Application.enabledcanelkey = xlErrorHandler でエラーを起こしてできるようなのですが。ワードですと、エラーを起こすような定数が見つかりません。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 何をしているのか分かりませんが、結論から言わせていただくと、Word VBA自体にはそのような指定は出来ません。 あえて、そうしたいのでしたら、仮想キーボードを使ってキーを監視するしかありません。 以下の場合は、ErrorHandler を使う意味があまりありません。Exit For だけで十分です。 '------------------------------------------- Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer Sub Test1() Dim i As Long Dim intWait As Long   On Error GoTo ErrorHandler   For intWait = 1 To 10 ^ 5     StatusBar = intWait     If GetAsyncKeyState(vbKeyEscape) <> 0 Then Err.Raise 18     DoEvents   Next intWait ErrorHandler:   If Err.Number > 0 Then    MsgBox "ユーザーによる中断がなされました。", vbInformation   End If   End Sub '------------------------------------------- もともと、Wordでは、そういう状況になることを想定していないからだと思います。ただ全体的に必要なら、例えば、インターネットのアクセスなどの場合は、Wordにやらせず、裏でExcelにやらせるのがよいと思います。

kfnorisu
質問者

お礼

なるほどそうですか。どうもありがとうございました。

回答No.2

kfnorisuさん 今日は! >Word VBAの初心者です。マクロの実行中にescキーが押された場合の処>理を、こちらで指定することはできますか? WordでのVBAを勉強する人は少ない様で余りサイトは無いのですが。 ■自分で作るWordマクロ(1)目次「Word 2003以前 & Word 2007対応」↓ http://www.saglasie.com/ebooks/0001.htm 内容:Wordマクロを基礎から解説した入門書が皆無に等しいこと、エディタなどのマクロに比してWordマクロはプログラムのコードが複雑に見えることなどから、今までWordの一般ユーザーからは敬遠されてきました。 ■自分で作るWordマクロ(2)↓ http://www.saglasie.com/ebooks/0002.htm 初めての人でもプログラマー的思考で処理の流れを考え、自分でマクロを作ることができるように、基礎の基礎から解説してみました。 マクロは聞くと直ぐに使用できますが、応用が効きませんので自分自身で身に付ける事が大切だと思います。

kfnorisu
質問者

補足

ARIKEN43さん こんにちは。 おっしゃることはわかるのですが、とりあえず目先の疑問も解決したいのです。お勧めの参考書は検討させていただけます。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

Sub test02() Cells(5, "A") = xlErrorHandler End Sub をエクセルVBAで実行すると、A5には、5と入ります。 ワードVBAで(エクセルで xlErrorHandlerを使う代わりに) Application.enablecanelkey = 2 でうまく行きませんか。 >質問の enabledcanelkey はApplication.EnableCancelKey = の間違いでしょう。 参考 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_090_050.html この辺は、アプリ固有の機能では無く、値的には、両者アプリで同じではと推定して。 自信はありませんが。 ーーー ワードの組み込み定数一覧も、msdnに在りそうだが、開けなかった。

kfnorisu
質問者

補足

 教えていただいた方法を試しましたが、うまくいきません。参考URLは、質問する前に参考にはしていたのですが・・・

関連するQ&A

  • VBAでESCキーを無効にしたいのですが、うまくいきません。

    EXCEL VBA でESCキーを無効にするために、 Application.EnableCancelKey = xlDisabled を使用していますが、 特定のフォルダ内のEXCELファイルを開いて、ある処理をして保存するといったプログラムでは、ESCキーを無効にすることができませんでした。 原因を探るために以下のテストプログラムを作成しましたが、実行中にESCキーを押すと(長押しすると確実に) 「実行時エラー'1004' openメソッドは失敗しました。'Workbooks'オブジェクト」 のメッセージが表示されて止まってしまいます。 どこに原因があるのでしょうか? よろしくお願いします。 以下、テストプログラム ////////// Private Sub CbStart_Click() Dim Fname As String Dim Fpath As String Application.ScreenUpdating = False Application.EnableCancelKey = xlDisabled Fpath = "d:\work\" Fname = Dir(Fpath & "*.xlsx") Do While Fname <> "" Workbooks.Open Fpath & Fname CloseWorkbook Fname Fname = Dir() Loop Application.ScreenUpdating = True End Sub 以上 //////////////////

  • ユーザーフォームを「Esc」キーで消去できるようにしたい。

    こんばんは。 エクセル2003で、VBAでユーザーフォームを挿入し、 show modalをfalseにし、 「マクロの実行」でエクセルの画面に戻った時に、 「Esc」キーでユーザーフォームを消去することは不可能でしょうか? 何かやり方があったら教えて欲しいです。 よろしくお願いします。

  • Excel 2003 VBAにてマクロの実行中にESCキーにて中断されないようにしたい

    Excel 2003 にてマクロの実行中にESCキーを押されるとコードの実行が中断されるのを抑制したいのですができません。 シートに直接テキストボックスコントロールを貼り付けています。 そのテキストボックスにKeyDownイベントプロシージャを記述しています。 テキストボックスにIMEの全角文字を入力中(未確定状態)の時に、ESCキーを押すとコードの実行を中断しましたというダイアログが出てしまいます。 KeyDownイベントプロシージャの内容の有無にかかわらず(処理は無記入でも)、ESCキーを押すとダイアログが表示されてしまいますので、ESCキーを押してもダイアログが表示されず処理が中断されない方法はありませんでしょうか。 調べましたところ、 Application.EnableCancelKey = xlDisabled にてESCキーを無効にする事ができるそうなのですが、BOOKを開いた時のイベントにて 上記コードを記載しているのですが、抑制はできません。 何かしら別の方法で対応などはできないものなのでしょうか。 よろしくご教示をお願い申し上げます。

  • Excel VBA Escキー押下をコードで表わすと…

    Excel VBA Escキー押下をコードで表わすと… Excel2003を使用しています。 ある列をダブルクリックすると、指定した範囲のセルを塗りつぶすイベントマクロを作成しました。 ダブルクリックで塗りつぶされた後は、セルが編集状態になっているので、Escキーを押して編集状態を解除していましたが、Escキーを押して編集状態を解除するところまでをコードに書いたらどうかと思い、塗りつぶしを指定しているコードの後に、『SendKeys "{ESC}"』と追加してみたのですが、追加する前と同じ状況で、編集状態のままでした。 Enterや↓キーを押した場合を試しに書いてみると、塗りつぶされた後、1つ下のセルに移動しました。 コードを追加した場所がいけないのか、それとも、使い方が間違っているのか…?? どなたかわかる方がいらっしゃいましたら、教えていただけないでしょうか。 よろしくお願いします。

  • Valueで値を貼り付けコピー時Escキー連続押下

    現在業務で以下のようなマクロを記述しています。 (Xはダミー文字です) Function XXX() (略) On Error GoTo OUTPUT_ERROR Application.EnableCancelKey = xlErrorHandler (略) '別ブックからの値貼り付けコピー XXX.Value = XXX.Value (略) OUTPUT_ERROR: XXXXXXXXXXX (略) End Function この処理において、Valueを用いた値の貼り付けが膨大なデータを対象としており長時間処理がかかる場合、その貼り付け処理中にEscキーを1回押下した時は、エラートラップが正常に働き、値の貼り付けの途中で終了しているようなのですが、同じ状況でEscキーを連続で押下し続けた場合、2回目の押下以降で「実行時エラー '18':」という表記のウィンドウが表示され処理が止まってしまいます。 上記ウィンドウにてデバッグボタンを押下すると、「OUTPUT_ERROR」の最初の行(XXXXXXXXXX )で止まっています。 尚、同じ処理をValueではなくCopyにて実装したところ、Escキー連続押下しても、Copy処理が完了するまで割込み処理が走っていないようで、Copy終了後に「OUTPUT_ERROR:」以降の処理が走っているようでした。ただ、Valueよりも処理時間が格段に長くなってしまうため、こちらの案は出来る限り採用しない方向で検討しています。 実現したいことは、処理時間の短縮の為、Valueにて値を貼り付けコピーを実施しつつも、それが長時間に渡る場合はEscキー押下でキャンセル処理を実装することなのですが、Escキーを連続押下された場合も考慮して動作確認をしたところ、上記の現象が出てしまっており、解決の糸口が見つかっていません。 この場合、Escキーが連続で押された場合も正常にキャンセル処理を走らせるには、どのようにしたら実現できますでしょうか?よろしくお願い致します。

  • フォルダ参照ダイアログAPIをVBAに組み込んだときのESCキー押下

    フォルダ参照ダイアログAPIをVBAに組み込み、フォルダ選択画面が表示されたとき、ダイアログ上の「OK」「キャンセル」以外に、キーボードの「ESC」キーを押下すると、VBAの「コードの実行を中止」ダイアログが表示されプログラムの実行が中断します。「ESC」キーを押下しても「キャンセル」と同等の処理で、「コードの実行を中止」ダイアログを表示しないようにできるでしょうか。お知恵をお貸しください。

  • ExcelVBAでのエラー処理について

    Excel2003のVBAでマクロを作成しています。 On Error Gotoを使用して開こうとしたブックを開こうとして目的のブックがなかった場合のエラー処理コードを書いたのですがうまくエラー処理行に飛んでくれず、実行時エラーのメッセージがでてマクロがとまってしまいます。 コードを見返したところ記述ミスはないようなのですが、考えられるミスは何なのでしょうか?

  • 複数のシートに対してDo~Loopで処理を繰り返したいのですが処理を止める構文が解りません。

    処理の度にシート数が変わるブックで同じマクロを繰り返したいのですが、すべてのシートを選択してマクロを実行したところマクロに範囲指定→ソートの部分があり、処理が止まってしまいます。そこでDo~Loopを使用して順番にマクロを処理していこうと思うのですが、マクロを止める構文がよく解りません。 VBA初心者なものでいろいろ調べて以下のようなものを考えてみたのですがエラーになってしまいます。どなたかお助けください。 Do Until ActiveSheet.Previous.Is Nothing Application.Run "PERSONAL.XLS!Macro101" ActiveSheet.Previous.Activate Loop End Sub

  • Excel2002VBA「~のときは○○、そうではないときは何もしない」

    VBA初心者です。環境は、Excel2002で、Windows2000です。 VBAで、下記のようにしたいのですが、どうしてもいい方法を思いつきません。 どなたか、ご指導願います。 マクロ実行時にSheet2があるときは、Sheet2を削除。 ただし、ないときには何もしないで、次の処理へとぶ。 On Error GoTo を利用するのでしょうか? けれど、エラー処理へとんだ場合、どう処理したらいいのか分かりません。 どうぞよろしくお願いします。

  • エクセル マクロのキー入力

    マクロ初心者です、過去の質問を調べたのですが、VBAでキー入力の処理が解りません。 今は、C列~H列とU列に数字を入力してからVBAを実行していますが、H~Uへ移るのに→で移動しています。 毎回面倒なので、最初に入力してU列を入力してからそのまま今のマクロを実行したくなりました、が、VBAでキー入力の処理が解りません。 Office2000ParsonalなのでマクロでVLOOKUPは使えませんが、行と列の移動は変数を使って出来ますので、そういったことは省いて頂いて結構です。 よろしくお願いします。

専門家に質問してみよう