古い 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# での使用方法がわかりません
ありがとう