2

VSTO
VS2008 SP1
.NET 3.5
Excel 2007

私は.net初心者です。vstoアドインのThisAddIn_Startup()メソッドのvstoアドイン内から、Excelアプリケーション/自動化アドイン(xlaまたはxllではなくdll)である自動化アドインをロードしようとしています。グーグルから私は動作していない以下の解決策を得ました。

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{

        Application excel = Globals.ThisAddIn.Application;
        //Also tried without display alerts being set to false
        excel.DisplayAlerts = false;
        foreach (AddIn addin in excel.AddIns)
        {
            if (addin.progID.Equals("MY_ADDIN_PROG_ID"))
            {
                Debug.WriteLine("Addin installed is " + addin.Installed);
                addin.Installed = false;
                Debug.WriteLine("Addin is: " + addin.FullName + ", " + addin.progID);
                Debug.WriteLine("Addin installed is " + addin.Installed);
            }
        }
        AddIn addIn = excel.AddIns.Add("MY_ADDIN_PROG_ID", false);
        addIn.Installed = true;
        excel.DisplayAlerts = true;
        Debug.WriteLine("Addin is: " + addIn.FullName + ", " + addIn.progID);
        Debug.WriteLine("Addin installed is " + addIn.Installed);
        excel.DisplayAlerts = false;
        //OTHER STARTUP CODE
        Debug.WriteLine("Starting up addin!");
}

起動時にaddin.installedがfalseに設定され、trueに戻っていることがわかりますが、ワークシートにアドインからudfsを入力しようとすると、後でbutton_clickメソッドでロードしようとすると、#NAMEが表示されますか?エラー。私は私の知恵の終わりにいます。どんな助けでも大歓迎です。

ボタンクリックメソッドを呼び出す前に、最初に手動でセルに入力してudfをExcelで呼び出そうとすると、ワークシートの作成が機能し、udfsが期待どおりに評価されますが、これは理想的ではありません。

また、インストール済みプロパティをtrueに設定しても、udfアドインがExcelで非アクティブであることがわかるため、何も実行されていないようです。セルに入力した場合にのみ、アクティブになります。vstoスタートアップで自動化アドインをアクティブ化するために他に必要なことはありますか?

ありがとう!

4

4 に答える 4

0

ExcelでVSTOと自動化を組み合わせるように見えるよりも難しいです。私のブログ投稿が役立つかもしれません:

ExcelでのVSTOとUDF間の通信

于 2012-05-01T16:52:13.390 に答える
0

次のレジストリ キーに文字列値を追加するだけで問題ありません。

Office 2007 の場合

regkey HKEY_CURRENT_USER\SOftware\Microsoft\Office\12.0\Excel\Optionsを検索し、名前 = OPEN、値 = /A "YOUR ADDIN NAME HERE" の文字列値を作成します(引用符も含める必要があります)。

最初のアドインでは値の名前をOPENと呼び、2 つ目以降ではOPEN1OPEN2などを使用する必要があることに注意してください。

Office 2010 の場合

上記の regkey パスで12.014.0に置き換えるだけで、残りはすべて同じです。

以下の MSDN の記事も参考にしてください。

http://support.microsoft.com/kb/291392

于 2012-06-19T03:44:20.207 に答える
0

起動イベントでこれを行うかどうかはわかりません。私は似たようなことをしましたが、以前はまったく同じではありませんでした。別のイベント ハンドラーでいくつかの COM 可視関数を VBA に公開しました。

protected override object RequestComAddInAutomationService()
{
    // return something com-visible
}

では、この方法で自動化 dll を読み込んでみてはいかがでしょうか? これは、スタートアップ イベントが発生する前に発生します... Excel は、スタートアップ イベントの処理中にアドインのリストをロックするようなことを行っている可能性があります。Excel プログラミングを知ることができれば、退屈さが軽減されます。

于 2012-05-01T16:46:29.853 に答える
0

これは VSTO 固有のバグのようです。アドインを COM アドインに変換し、その後コードからオートメーション アドインを使用できるようになりました。私のチームは問題をマイクロソフトに送信したので、彼らの意見を見てみましょう.

于 2012-07-25T14:02:31.007 に答える