アドイン用に少しの VBA (outlook) を C# に変換しようとしています。それに苦労しています。このコードは、Outlook の返信/返信/転送フォームのアカウント ドロップダウンを変更します。エディターがテキストよりも多くのコードについてうめき声を上げているため、今ではもっと役に立たないものを入力する必要があります。私はそれの99%を変換しました。
public string Set_Account(string AccountName, Outlook.MailItem M)
{
string tempSet_Account = null;
Outlook.Inspector OLI = null;
string strAccountBtnName = null;
int intLoc = 0;
const int ID_ACCOUNTS = 31224;
Office.CommandBars CBs = null;
Office.CommandBarPopup CBP = null;
Office.CommandBarControl MC = null;
M.Display();
OLI = M.GetInspector;
if (OLI != null)
{
CBs = OLI.CommandBars;
CBP = CBs.FindControl(, ID_ACCOUNTS); // This line errors and I can't find what goes in it to make it work
CBP.Reset();
if (CBP != null)
{
foreach (Office.CommandBarControl MCWithinLoop in CBP.Controls)
{
MC = MCWithinLoop;
intLoc = MCWithinLoop.Caption.IndexOf(" ") + 1;
if (intLoc > 0)
{
strAccountBtnName = MCWithinLoop.Caption.Substring(intLoc);
}
else
{
strAccountBtnName = MCWithinLoop.Caption;
}
if (strAccountBtnName == AccountName)
{
MCWithinLoop.Execute();
tempSet_Account = AccountName;
break;
}
}
}
}
tempSet_Account = "";
MC = null;
CBP = null;
CBs = null;
OLI = null;
return tempSet_Account;
}
特にこの行に問題があります:
CBP = CBs.FindControl(, ID_ACCOUNTS);
失敗し、タイプ「MsoControlType」が必要であると表示されますが、適合するコントロール タイプが見つかりません。VBA では、1 つのエントリ (もう 1 つのエントリは空白) だけでコントロールを見つけることができるようです。C# では 2 つ必要です。
Microsoft.Office.Core.MsoControlType.msoCommandBarControl を ...msoCommandBarPopup に変換できません
しかし、私はそれへの参照をどこにも見つけることができません。