短いバージョン: イベントをアプリケーション レベルのアドインに送り返すコントロールを PowerPoint スライドに埋め込むための推奨される方法は何ですか? コントロールは、スライド ショー モードとデザイン モードで動作する必要があります。
長いバージョン:
私は最近、(簡単に言えば) リモート データ ソースからデータを取得し、対応するグラフをスライドに描画する PowerPoint 用の従来のアドインの開発に取り掛かりました。アドインはマネージ コード (C#) ですが、VSTO でビルドされていません。カスタム ラッパーと COM shim を使用しています。
チャートは定期的に更新する必要があり、この目的のためにアドインのツールバーに [更新] ボタンがあります。グラフを更新するまでまったく表示できない場合は、MSForms.CommandButton をスライド自体に (OLE オブジェクトとして) 埋め込みます。同様の Excel アドインでこのアプローチを使用して成功しました。
残念ながら、PowerPoint では機能しません。ボタンのクリック イベントがアドインに到達していないようです。この観察を裏付ける情報をオンラインで見つけました。また、ボタンの代わりに MSForms.ComboBox を使用してテストしたところ、機能しました。コンボ ボックスの変更イベントがアドインに到達し、更新が成功しました。
そのため、ボタンをアドインと通信させる別の方法を見つける必要があるようです。私はいくつかのアプローチを考えることができ、ベストプラクティスがあるかどうか疑問に思っています:
- ボタン (または同様の形状) で、アドインのコードを呼び出すマクロを実行します。スライドがデザイン モードで表示されている場合、これが機能しない可能性があると聞きましたが、まだテストして確認していません。
- MSForms フォームもスライドに埋め込み、クリック イベントをキャプチャしてアドインに渡します。繰り返しますが、これは単なる理論であり、まだテストされていません。
- 完全に別のものを使用してください。これを行うには「最新の」方法が必要であることがわかります。それが何であるかを知るには、Office開発に精通していません。
VSTO または同様のテクノロジ (NetOffice など) への移行はオプションですが、可能であれば避けたいと考えています。ありがとう!