-2

アドイン用に少しの 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 に変換できません

しかし、私はそれへの参照をどこにも見つけることができません。

4

1 に答える 1

0

C# では、ここで行っているようにパラメーターを除外することはできません: ".FindControl(,". "null" または null オブジェクトを渡す必要がある場合。

于 2013-09-20T13:38:48.890 に答える