0

Outlook 2010 でしばらく使用してきた小さな VSTO アドインがあります。Office 2013/Outlook 2013 への移行が間もなく行われるため、Outlook 2013 で動作するようにアドインを書き直す必要があります。

Outlook アドインは、カスタム リボン ボタンによってトリガーされます。トリガーされると、アドインは新しい会議出席依頼ウィンドウを作成し、メッセージ本文にカスタム コンテンツを入力します。その後、ユーザーは会議出席依頼を完了し、必要に応じて送信できます。

私が現在抱えている問題は、以前、このメッセージ ウィンドウが CommandBarControl オブジェクトを使用して作成され、Outlook の [新しい会議] ボタンのクリックをプログラムでトリガーしたことです。これは以前のバージョンの Outlook では機能していましたが、CommandBarControl オブジェクトが Outlook 2013 から削除され、サイレントに失敗するようになりました。これはまさに私が見ているものです。

新しい会議出席依頼を作成するために使用されていた元のコードは次のとおりです。

Explorer activeExplorer = Globals.ThisAddIn.Application.ActiveExplorer();

CommandBarControl commandBarControl = activeExplorer.CommandBars.FindControl(Type.Missing, 1106);
commandBarControl.Execute();

appointmentItem = (AppointmentItem)Globals.ThisAddIn.Application.ActiveInspector().CurrentItem;
appointmentItem.MeetingStatus = OlMeetingStatus.olMeeting;
appointmentItem.RTFBody = message; // message is a byte array being passed in from elsewhere.

FindControl() メソッドを使用して Outlook の [新しい会議] ボタンを検索し、そのボタンのクリック アクションを Execute() します。

別の方法としては、次のようなものがあります。

appointmentItem = (AppointmentItem)Globals.ThisAddIn.Application.CreateItem(OlItemType.olAppointmentItem);
appointmentItem.MeetingStatus = OlMeetingStatus.olMeeting;
appointmentItem.RTFBody = message; // message is a byte array being passed in from elsewhere.
appointmentItem.Display(false);

2 番目のコード ブロックも新しい会議出席依頼ウィンドウを作成し、Outlook 2013 で機能します。ただし、2 番目のコード ブロックには微妙ではあるが重要な違いがいくつかあります...

  1. 作成された会議出席依頼は、ユーザーがカレンダーで以前にクリックした日付と時刻を継承しません。代わりに、ユーザーがカレンダーでクリックした日付/時刻に関係なく、現在の日付/時刻にデフォルト設定されます。
  2. 作成された会議出席依頼は、ユーザーが別のユーザーに代わって会議出席依頼を作成している状況を尊重しません。これは、ユーザーが新しい会議出席依頼を開始する前にクリックされたカレンダーを無視するためです。

私の質問は次のとおりです。Outlook 2013 で、ユーザーが事前にクリックした予定表を尊重する新しい会議出席依頼を (VSTO アドインを使用して) プログラムで作成するにはどうすればよいですか? つまり、以前に CommandBarControl オブジェクトを使用して満たすことができた上記の 2 つの要件を満たすでしょうか?

4

1 に答える 1