- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Accessから呼び出したExcelの入力状態を解除したい)
AccessからExcelの入力状態解除方法を解説
このQ&Aのポイント
- AccessフォームからExcelファイルを開くと、Excelのセルが入力状態になり、操作が固まることがある問題があります。
- 入力状態を解除する方法を知りたい方へ、本記事では解決策を提案します。
- また、Excel操作の中断を回避する方法についても説明します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> 問題はExcel操作中にセル上で「F2キー」を押下すると、入力状態になると思います。 とりあえず、Access 側で AppActivate で Excel をアクティブにし、 SendKeys で Enter キーを2回送信してみてはどうでしょう? 正直に言うと、おやりになりたいことがイメージできません。 > 新しく開かれたtest.xlsファイルの上で入力を行い、Accessに戻って > フォーム上にあるボタンをクリックし、Excelファイルを閉じる処理 という仕様ですから、 セルの編集終了--(手動操作)--> Access 側ボタンクリック --> Excel 閉じる という過程で「セルの編集中」というのは問題にならないと思いますが。 セルの編集状態を解除してから、Access 側のボタンをクリックすれば 良いだけなのでは? Excel のデータ入力中は、Access 側は待機状態なのですよね? なぜ > この状態の時にAccess側で「obj.Quit」や「obj.cells(1, 1).select」 > のようなExcelへの操作を行おうとすると といった状況が発生するのでしょうか?
お礼
解決しました。 AppActivateでは上手く動かすことができませんでしたので、WinAPIからSetForegroundWindowを利用しました。 事前にExcelのハンドルを取得しています。 ~~~~~~~~~~~~~~~ Dim handle AS Long Dim obj As Object Set obj = CreateObject("Excel.Application") obj.Visible = True obj.Workbooks.Open Application.CurrentProject.Path & "test.xls" handle = obj.hwnd ・ ・ ・ SetForegroundWindow handle SendKeys "{ENTER}", True SendKeys "{ENTER}", True ~~~~~~~~~~~~~~~ objにアクセスするだけで固まってしまうので、このような方法を取ってみました。 もっとスマートな方法や回避策はあると思いますが、希望通りの動作になりましたので、これでクローズさせていただきます。 アドバイスありがとうございました。
補足
>とりあえず、Access 側で AppActivate で Excel をアクティブにし、 >SendKeys で Enter キーを2回送信してみてはどうでしょう? ありがとうございます、試してみます。 >セルの編集終了--(手動操作)--> Access 側ボタンクリック --> Excel 閉じる >という過程で「セルの編集中」というのは問題にならないと思いますが。 >セルの編集状態を解除してから、Access 側のボタンをクリックすれば >良いだけなのでは? >Excel のデータ入力中は、Access 側は待機状態なのですよね? なぜ >> この状態の時にAccess側で「obj.Quit」や「obj.cells(1, 1).select」 >> のようなExcelへの操作を行おうとすると >といった状況が発生するのでしょうか? 本来はExcelで編集状態を解除してから、Accessのフォームに戻ります。 ただ、Excelで値だけ打ち込んで、ENTERキーなどで決定をしないままAccessフォームに戻ってくるなどの操作が考えられるため、例外処理として対処をしたいと思った次第です。 なんか見当違いな事書いてましたらすいません。