11

新しいタブを正常に作成し、既存のタブの隣に配置しました。その後、ボタンが 1 つしかないことに気がついたので、(今のところ) [ホーム] タブに配置する方が理にかなっています。しかし、実際にはそれが機能しませんでした。

私はガイドとウォークトラフに従おうとしました。XML を取得し、その XML を次のように変更しました。

<tabs>
  <!--<tab idMso="TabAddIns">-->
  <tab idMso="TabHome">
    <group id="group1" label="Hazaa!">
      <box id="box1" />
    </group>
  </tab>
</tabs>

プロジェクトを実行しても UI に変更はありません。そのため、次のいずれかだと思います。

  1. XML はまったく読み取られません。
  2. 名前TabHomeが間違っています (少なくとも Outlook 2010 の場合)。
  3. 属性idMsoが間違っている (少なくとも Outlook 2010 の場合) または
  4. 上記のいずれかのその他/組み合わせ。

リボンを変更するにはどうすればよいですか? (Outlook 2010/VSTO/VS 2010/.NET 4)。

4

4 に答える 4

20

属性idMsoは正しいですが、必要なタブのIDはですTabMail。MSDNで、Office2010コントロールIDのリストを含むExcelファイルのパックセットを見つけることができます。次に、質問へのコメントで述べたように、サンプルXMLにcustomUIとリボンタグがない可能性があります。(免責事項:Outlookでリボンをカスタマイズしておらず、Word、Excel、PowerPointのみをカスタマイズしていますが、同じように機能すると思いますか?)

次のようなものを試してください。

<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
    <ribbon>
        <tabs>
            <tab idMso="TabMail">
                <group id="group1" label="Hazaa!">
                    <box id="box1" />
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>
于 2012-09-19T11:42:52.190 に答える
0

編集しました。申し訳ありませんが、dnn リンクを提供しました。Office が必要で、C# が必要です。

ここにVBAのStackOverflowの回答があります... リボンのカスタムタブIDを取得するには?

AccessibleChildren _
            Lib "oleacc.dll" _
                (ByVal paccContainer As Object, _
                 ByVal iChildStart As Long, _
                 ByVal cChildren As Long, _
                       rgvarChildren As Variant, _
                       pcObtained As Long) _
            As Long

C# では、次のように変換されます

[Lib "oleacc.dll"]
Long AccessibleChildren(object paccContainer, 
                        long iChildStart, 
                        long cChildren, 
                        object rgvarChildren, 
                        long pcObtained)...

試したことがないので、うまくいくかどうかはわかりません。

他のすべてのドキュメントから、単にリボン オブジェクトを取得し、その中で (foreach を使用して) すべての子を反復処理しているように見えます。

于 2014-06-19T21:26:24.513 に答える