1

XML拡張パックを使用してMicrosoftWordに機能を追加するプロジェクトがあります。現在、お客様に提供するドキュメントを開くと、パックが読み込まれ、Microsoft.Office.Core.CommandBar.Controls.Addなどを使用してメインメニューとツールバーに追加するSmartDocInitializeメソッドが実行されます。変更を加えずに、Word 2007で開くと、これらのボタンは[アドイン]リボンタブに追加されますが、ボタンはすべて小さく、適切にグループ化されておらず、[アドイン]タブをに移動する方法がないため、これは理想的ではありません。ドキュメントが読み込まれるときの前面。

ドキュメントをOffice2003で開いた場合、この機能を同じに保ちたいのですが、ドキュメントをOffice 2007で開いた場合、新しいリボンタブとすべてのボタンを記述したxmlファイルを読み込みたいと思います。私がオンラインで見つけたものはすべて、非常に特殊な魔法の組み合わせがある場合にのみリボンファイルが読み込まれるように見えました(Visual Studioでビルドすると機能しますが、ユーザーにどのように展開するかについての情報はありませんボックス)、Officeプロパティ用のVisual Studioツールを使用して元々作成されたプロジェクト全体がある場合にのみ機能しますが、現在は持っていません。

私たちの開発環境は、XP、Visual Studio 2005、C#、.NET2.0です。

4

2 に答える 2

2

リボンUIは、古いCommandBarsUIほどプログラム的ではありません。やりたいことができないと思います。私が知る限り、リボンUIをプログラムで変更する唯一の方法は、(COM)アドインにIRibbonExtensibilityインターフェイスを実装させ、GetCustomUIメソッドからカスタムXMLファイル(リボン定義を含む)を返すことです。CommandBars UIのように、ボタンを一度に1つずつ追加または削除する方法はありません。まったく違います。ドキュメント内のいくつかのマクロからやりたいことができるとは思いません。

私はXML拡張パックに精通していませんが、ユーザーのPCにインストールする必要がある場合は、適切なリボンXMLをロードできるアドインもインストールできます。

于 2009-08-17T19:27:17.267 に答える
0

これは見た目ほど難しくありません。

ドキュメント内のいくつかの VBA マクロに既にリボン ボタンを接続している場合は、VBA プロジェクト内の参照を com visible .net アセンブリに追加するだけです。

.net アセンブリは、com visible とマークされている (つまり、参照ダイアログ ボックスにタイプ ライブラリとして表示される) ことに加えて、VBA から呼び出せるようにセットアップされたいくつかのメソッドを持っている必要があります。

google "vba .net 呼び出し可能"

難しいことではありません。クラスを com 可視としてマークし、ProgID 属性で宣言し、メソッドをパブリックにし、メソッドが単純な型を返すようにし、regasm を使用してターゲット マシンにアセンブリを登録します (開発ボックスでは必要ありません)。

于 2009-11-15T23:17:40.040 に答える