7

そこで、ドキュメントレベルのExcelVSTOアドインでいくつかのキーコマンドをキャプチャしたいと思います。VBAを使用して、アドインがVBAと通信する以外に、それを行う方法を見つけることができないようです。ヘルプ/例をいただければ幸いです。

Excel2007を使用しています。

4

2 に答える 2

4
  1. 1つの方法は、Addin-Expressのサードパーティソリューションを使用することです。彼らの製品には、リボンメニューコマンドのプロパティとしてキーボードショートカットを追加する機能が含まれています。

  2. もう1つの方法は、一般にWindowsサブクラス化と呼ばれるいくつかのWin32 APIを介して、低レベルのキーボードフックを利用することです。これは、それを行う方法のコードサンプルを含む優れた説明です。VSTOでこのコードを「機能」させるために必要な「余分な」ことは、メソッドをイベントに移動し、UnhookWindowsHookEx()メソッドをShutdownイベントに移動することだけであることに注意してください。SetHook()Startup

    StephenToubによるMSDNの記事をここでチェックしてください。

  3. 最後にOnAction、Addinクラスのプロパティの使用があります。このメソッドでは、VBAを使用する必要があり(基になる.netアドインを指すコールバックメソッドの観点から)、ソリューションでVBAを配布する意思がある限り(つまり、xlsまたはdoc w / vbaプロジェクト、またはおそらくネイティブアドイン)。また、VBAがVBAコードからアドインを参照できるように、メソッドをマークcomvisible = trueして公開する必要があることに注意してください。GetAutomationServiceObject

    そのスレッドについては、ここを参照してください...

于 2010-05-25T23:48:24.003 に答える
3

これは、Excelをサブクラス化して主要なコマンドを監視するAPI呼び出しを介してのみ実行できます。これは古いですが、それでも適用されます。

于 2010-02-21T04:29:56.237 に答える