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 番目のコード ブロックには微妙ではあるが重要な違いがいくつかあります...
- 作成された会議出席依頼は、ユーザーがカレンダーで以前にクリックした日付と時刻を継承しません。代わりに、ユーザーがカレンダーでクリックした日付/時刻に関係なく、現在の日付/時刻にデフォルト設定されます。
- 作成された会議出席依頼は、ユーザーが別のユーザーに代わって会議出席依頼を作成している状況を尊重しません。これは、ユーザーが新しい会議出席依頼を開始する前にクリックされたカレンダーを無視するためです。
私の質問は次のとおりです。Outlook 2013 で、ユーザーが事前にクリックした予定表を尊重する新しい会議出席依頼を (VSTO アドインを使用して) プログラムで作成するにはどうすればよいですか? つまり、以前に CommandBarControl オブジェクトを使用して満たすことができた上記の 2 つの要件を満たすでしょうか?