2

http://msdn.microsoft.com/en-us/library/ee767705で詳しく説明されている SetCustomUI VBA メソッドを使用して、MS Project 2010 のリボンにタブを追加しました。

タブの XML が正常に読み込まれ、レイアウトが適切に設定されています。問題は、ボタンと editBoxes に関連付けられた VBA コールバックを実行するときです。Project は、ここで定義されている標準のメソッド シグネチャを使用していないようです: http://msdn.microsoft.com/en-us/library/aa722523.aspx#a16c7df5 -93f3-4920-baa8-7b7290794c15_Ribbon .

これらの署名は、Excel 2010 などの "より標準的な" Office プログラムで機能しますが、Project で同じパラメーターを使用してメソッドを記述すると、メソッドからすべてのパラメーターを削除しない限り、例外ポップアップが表示されます。これはボタン (最初の MSDN 記事で説明されています) では問題ありませんが、editBox の "onChange" コールバックでは、コールバックに引数が指定されていないため、editBox に入力されたテキストを読み取る方法がありません。それらは役に立たない。Project でリボン editBox のコンテンツにアクセスするにはどうすればよいですか? Project でこの String への VBA アクセスが見落とされていませんか? マネージド コードでのみアクセスできますか?

私が試した XML / VBA ペアの例を次に示します。

<customUI  xmlns="http://schemas.microsoft.com/office/2006/01/customui">
    <ribbon >
        <tabs >
            <tab 
                id="NavHelper"
                label="Nav Helper">
                <group 
                    id="Group1"
                    label="Search">
                    <box  id="Box1" >
                        <editBox 
                            id="DateBegin"
                            label="Dates from"
                            sizeString="11/11/1111"
                            onChange="DateBegin_onChange"/>
                        <editBox 
                            id="DateEnd"
                            label="to"
                            sizeString="11/11/1111"
                            onChange="DateEnd_onChange"/>
                    </box >
                    <button 
                        id="doSearch"
                        imageMso="InstantSearch"
                        label="Search"
                        size="large"
                        onAction="doSearch_onAction"/>
                </group >

            </tab >
        </tabs >
    </ribbon >
</customUI >

そしてVBA:

Public Sub DateBegin_onChange(control As IRibbonControl, text As String)
    MsgBox text
End Sub

Public Sub doSearch_onAction(control As IRibbonControl)
    MsgBox "pressed!"
End Sub

したがって、この例では、セットアップは Excel で完全に機能しますが、それを Project に持ち込むと、メソッド定義からすべてのパラメーターを削除しない限り、コールバックは実行されません。何か案は?

4

1 に答える 1

1

Microsoft Office のカスタム UI エディターを試しましたか?

http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2009/08/06/7293.aspxを参照してください。

私は MS Project で作業したことはありませんが、他のオフィス プログラムでは、customUI XML を入力して検証し、対応する VBA 関数の署名を取得することもできます。

Excel で customUI XML を試して検証しようとすると (プロジェクトを持っていません...)、名前空間が間違っているというエラーが表示されます。

于 2012-08-06T13:43:15.710 に答える