そこで、ドキュメントレベルのExcelVSTOアドインでいくつかのキーコマンドをキャプチャしたいと思います。VBAを使用して、アドインがVBAと通信する以外に、それを行う方法を見つけることができないようです。ヘルプ/例をいただければ幸いです。
Excel2007を使用しています。
そこで、ドキュメントレベルのExcelVSTOアドインでいくつかのキーコマンドをキャプチャしたいと思います。VBAを使用して、アドインがVBAと通信する以外に、それを行う方法を見つけることができないようです。ヘルプ/例をいただければ幸いです。
Excel2007を使用しています。
1つの方法は、Addin-Expressのサードパーティソリューションを使用することです。彼らの製品には、リボンメニューコマンドのプロパティとしてキーボードショートカットを追加する機能が含まれています。
もう1つの方法は、一般にWindowsサブクラス化と呼ばれるいくつかのWin32 APIを介して、低レベルのキーボードフックを利用することです。これは、それを行う方法のコードサンプルを含む優れた説明です。VSTOでこのコードを「機能」させるために必要な「余分な」ことは、メソッドをイベントに移動し、UnhookWindowsHookEx()メソッドをShutdownイベントに移動することだけであることに注意してください。SetHook()
Startup
最後にOnAction
、Addinクラスのプロパティの使用があります。このメソッドでは、VBAを使用する必要があり(基になる.netアドインを指すコールバックメソッドの観点から)、ソリューションでVBAを配布する意思がある限り(つまり、xlsまたはdoc w / vbaプロジェクト、またはおそらくネイティブアドイン)。また、VBAがVBAコードからアドインを参照できるように、メソッドをマークcomvisible = true
して公開する必要があることに注意してください。GetAutomationServiceObject
これは、Excelをサブクラス化して主要なコマンドを監視するAPI呼び出しを介してのみ実行できます。これは古いですが、それでも適用されます。