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 に持ち込むと、メソッド定義からすべてのパラメーターを削除しない限り、コールバックは実行されません。何か案は?