2

Outlook アドインがあります。[割り当てのキャンセル] ボタンと同じように、[TaskItem Inspector] ウィンドウでタスクの割り当てをプログラムでキャンセルする必要があります。

呼び出しTaskItem.CancelResponseState()が機能する可能性があると考える人もいるでしょう。割り当てはキャンセルされますが、タスクは割り当てられない状態のままになります。リボンの [タスクの割り当て] ボタンが無効になっています。

Outlook 2007 および 2010 では、CommandBarButton[割り当てのキャンセル] ボタンのオブジェクトを取得して、そのExecute()メソッドを呼び出すことができます。これにより、望ましい動作が得られます。ただし、Outlook 2013 では、このコマンド バー ボタンは存在しなくなりました。Inspector コマンド バーが 2007 年にリボンに置き換えられたので、これは驚くべきことではありません。ただし、CommandBarButton オブジェクトは、下位互換性のためにプログラムによってまだ存在していました。Outlook 2013 では、Microsoft はついにこのオブジェクトを削除しました。

質問は次のとおりです。リボン ボタンをプログラムで「クリック」する方法はありますか。そうでない場合、リボン ボタンのようにタスクの割り当てをキャンセルする別の方法はありますか?

4

1 に答える 1

4

RedemptionとそのSafeRibbonオブジェクトの使用を試すことができます。

'simulate a click on the "Assign Task" button of an active Inspector
set sInspector = CreateObject("Redemption.SafeInspector")
sInspector.Item = Application.ActiveInspector
set Ribbon = sInspector.Ribbon
oldActiveTab = Ribbon.ActiveTab
Ribbon.ActiveTab = "Task"
set Control = Ribbon.Controls("Assign Task")
Control.Execute
Ribbon.ActiveTab = oldActiveTab 'restore the active tab

編集。C# では、次のようになります (プロジェクト参照に Redemption を追加したと仮定します)。

//simulate a click on the "Assign Task" button of an active Inspector
Redemption.SafeInspector sInspector = new Redemption.SafeInspector();
sInspector.Item = Application.ActiveInspector;
Redemption.SafeRibbon Ribbon = sInspector.Ribbon;
string oldActiveTab = Ribbon.ActiveTab;
Ribbon.ActiveTab = "Task";
Redemption.SafeRibbonControl Control = Ribbon.Controls.Item("Assign Task");
Control.Execute();
Ribbon.ActiveTab = oldActiveTab; //restore the active tab
于 2014-03-20T23:19:58.050 に答える