0

古い Excel アドイン (VBA で作成) を使用していますが、現在は .NET、ExcelDNA、NetOffice を使用して古いアドインを書き直しています。古いアドインにはUDF、たとえばOldUDFがあり、新しいアドインにはNewUDFがあり、2つのUDFは同じことを行い、同じパラメーターを受け入れます。しかし、それらは異なる関数名を持っています。従来の理由により、一部のクライアントには古いアドインがあり、一部のクライアントには新しいアドインがあります。一部のクライアントは両方を持っています。両方の Excel アドインがインストールされている場合、新しいアドインで oldUDF を newUDF に転送するというチェックボックスを提供したいと考えています。チェックボックスをオンにすると、oldUDF が newUDF として転送されます。チェックボックスがオフの場合、oldUDF は転送されません。新しいアドインで oldUDF と newUDF を定義していますが、チェックボックスがオフのときに oldUDF の定義を削除する方法がわかりません。ありがとう

編集:

これが私が試したものですが、うまくいきません。

#if FORWARD
        public static object OldUDF([ExcelArgument(AllowReference = true, Name = "Symbol",
            Description = "is a futures symbol as defined in *** Database.")]string symbol,
            [ExcelArgument(AllowReference = true, Name = "Column",
                Description = "is a column associated with a symbol")]string column,
            [ExcelArgument(AllowReference = true, Name="Date",
                Description = "is the date for which you want the value")]object onDate,
                object fillOpt, object frequency)
        {
            return NewUDF(symbol, column, onDate, fillOpt, frequency);
        }
#endif 

AutoOpen() では、forward が true の場合、ファイルから forward 値 (true または false) を読み取ります。

        var forward = Helper.ReadForwardOldUDFSettingFromAFile();
        if(forward)
        {
             #define FORWARD
        }

しかし、コンパイルエラーが発生します

もう一度編集: 登録に成功しました。OldUDF の宣言を別の dll に入れました。oldUDF.dll が別の oldUDF.xll、oldUDF.dna を作成するとします。

AutoOpen では、(ファイルからの) 転送値が true かどうかを確認し、Excel.Application.RegisterXLL("olderUDF.xll"); を実行します。これはうまくいきます。

ただし、転送値が false の場合、C# で XLL を登録解除または削除する方法が見つかりませんか?

編集: http://msdn.microsoft.com/en-us/library/office/bb687866.aspxを見つけましたが、C# での使用方法がわかりません

ありがとう

4

1 に答える 1