- 締切済み
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 以上 //////////////////
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- hige_082
- ベストアンサー率50% (379/747)
そ~ですか、お役に立てずすいません #2の補足のコードを試して見ましたが 私の環境ではエラーが出ませんので コード的には問題無いと思われます EXCEL2007が手元に無いので、これ以上の検証は出来ませんが 他のPCがあれば他のPCで試してみる 他のEXCELバージョンがインストールされているPCで試してみる ファイルがサーバーやUSB等にある場合はローカルで試してみる では失礼します
- hige_082
- ベストアンサー率50% (379/747)
>CloseWorkbook Fname これはどのような処理をしているのでしょう? これが怪しい気がします 試しに下記のように変更して実行してみてください 'CloseWorkbook Fname 'コメントアウト ActiveWorkbook.Close '追加 これでエラーが出ないようであれば CloseWorkbookの中のコードが原因ではと思います 上記の変更をして、私の環境(excel2000ですが)では[ESC]キーを押しても 最後まで実行されます 参考まで
- hige_082
- ベストアンサー率50% (379/747)
>「実行時エラー'1004' openメソッドは失敗しました。'Workbooks'オブジェクト」 このエラーは >実行中にESCキーを押すと(長押しすると確実に) この操作とは関係ないと思いますが 試しに、ESCキーを押さずに処理する、或いは >Application.EnableCancelKey = xlDisabled のコードを削除してみると エラーは出ないのでしょうか?
補足
回答ありがとうございます。 >試しに、ESCキーを押さずに処理する、或いは >Application.EnableCancelKey = xlDisabled >のコードを削除してみると >エラーは出ないのでしょうか? ESCキーを押さなければ、指定フォルダのファイルのオープンとクローズが正常に行われます。(エラーは出ません) >Application.EnableCancelKey = xlDisabled のコードを削除しても同じように正常に処理が行われ、途中でESCキーを押すと、「コードの実行が中断されました」のエラーメッセージが表示されて止まります。 よろしくお願いします。
補足
回答ありがとうございます。 >>CloseWorkbook Fname >これはどのような処理をしているのでしょう? >これが怪しい気がします すみません。 うっかり、自作のサブルーチンを使用していました。 ちなみに、CloseWorkbook は指定のファイルが開いていればクローズする処理をしています。 ///////// CloseWorkbook /////////////////////// Sub CloseWorkbook(ByVal wbName As String) If isOpenWorkbook(wbName) = True Then Workbooks(wbName).Close savechanges:=False '強制終了 End If End Sub ///////// ここまで /////////////////////////// >試しに下記のように変更して実行してみてください >'CloseWorkbook Fname 'コメントアウト >ActiveWorkbook.Close '追加 改めて、新しいブックのシートにボタンコントロールを張り付けて以下のコードで実行しました。 ////////// ここから ////////////////////////// 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 ActiveWorkbook.Close Fname = Dir() Loop Application.ScreenUpdating = True End Sub ////////// 以上 ////////////////////////////// d:\work フォルダには13個のワークシート(小さな表があるだけ)を入れて実行したのですが、やはり[ESC]キーを押すと(長押しすると確実に) 「実行時エラー1004 Openメソッドは失敗しました。Workbooksオブジェクト」 のエラーメッセージが表示されて、 「Workbooks.Open Fpath & Fname」 の行で停止します。(環境はExcel2007です。) たびたびすみませんが、よろしくお願いします。