Excel上の右クリックイベントをつかまえる方法は?


アイータ  2016-01-14 07:20:39  No: 47907

TExcelApplicationを使用した
エクセルの操作アプリケーションを作成しています。

Delphiのフォームの子ウィンドウとして
Excelウィンドウを表示し、表示や保存を行っています。
※以下のMr.Xrayさんのソースも参考にしながら、作成しています。
http://mrxray.on.coocan.jp/Delphi/plExcelEx/index.htm

Excelからの読み込みなど、概ね実装できたのですが、
1点、Excelのシート上で右クリックし、Excelのポップアップメニューを表示するタイミングで、
Excelのフォーカス(セルの選択状態)がぬけてしまう問題が発生いたしました。

調査したところ、
・Excel2013以上
・Delphiの子ウィンドウとしてExcelコントロールを表示
の条件で発生するようですが、解決方法がなく悩んでおります。。

そこで、右クリックのイベントをつかまえて
Delphi側でフォーカスをセットすることができないかと考えています。

■質問内容

そこで質問なのですが、Excel上で右クリックした際の
イベントを捕まえることはできるでしょうか?

以下のVBAのサイトを拝見しますと、BeforeRightClickという
イベントプロシージャが用意されており、実現できそうなのですが、
Delphiでもできないものかと。。
http://www.seiji-tsubosaki.net/ExcelTech/ExcelProfessionalEngineerTechnic/Contents_03.h

もしDelphiでもイベントプロシージャを実装する
方法があれば方法を教えていただけますでしょうか?

DelphiのバージョンはXE2です。

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


Mr.XRAY  2016-01-15 03:16:50  No: 47908

>Delphiでもできないものかと。。

エクセル関係のオブジェクトの生成方法や種類等によって異なります.

エクセルの VBA を使用する場合は,提示された
http://www.seiji-tsubosaki.net/ExcelTech/ExcelProfessionalEngineerTechnic/Contents_03.htm

と同じ方法となるでしょう.
「エクセル  VBA イベント」等でググってみてください.


Mr.XRAY  2016-01-15 16:16:08  No: 47909

>TExcelApplicationを使用した
>エクセルの操作アプリケーションを作成しています。

失礼 !! TExcelApplication を使用しているんですね.
TExcelApplication 等のコンポーネント類には,イベントが実装されています.


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加