次の方法で共有


手順 2: マネージ コード UDF の作成

Microsoft.Office.Excel.Server.Udf.dll への参照をプロジェクトに追加したら、次の手順ではカスタム関数を作成し、その関数に Excel Services のユーザー定義関数 (UDF) 属性のマークを付けます。

UDF クラスに Microsoft.Office.Excel.Server.Udf.UdfClass 属性のマークを付け、UDF メソッドには Microsoft.Office.Excel.Server.Udf.UdfMethod 属性のマークを付ける必要があります。

UDF アセンブリで Microsoft.Office.Excel.Server.Udf.UdfMethod 属性のマークが付けられていないメソッドは、UDF メソッドと見なされないため無視されます。

Microsoft.Office.Excel.Server.Udf.UdfMethod 属性は IsVolatile プロパティを持っています。IsVolatile プロパティを使用して UDF メソッドを揮発性または不揮発性として指定します。IsVolatile プロパティはブール値をとります。既定値は false で、特定の UDF メソッドが不揮発性であることを意味します。

UDF の作成

ディレクティブを追加するには

  • 使用する型は Microsoft.Office.Excel.Server.Udf 名前空間に定義されています。using (または Imports) ディレクティブを Class1.cs ファイルの最上位に追加すると、名前空間内で型を完全修飾しなくても Microsoft.Office.Excel.Server.Udf にある型を使用できます。

    このディレクティブを追加するには、Class1.cs ファイルで using System.Text: の後のコードの最初に以下のコードを追加します。

    using Microsoft.Office.Excel.Server.Udf; 
    

UDF クラスとメソッドをマーク付けするには

  1. public class Class1 のすぐ上に以下の属性を追加することによって、Class1 を UDF クラスとしてマーク付けします。

    [UdfClass]
    
  2. 数値を取る関数 (double 型) を作成し、その関数内でその数値に 9 を掛けます。関数は不揮発性の UDF メソッドです。以下のコードを Class1 に追加します。

    [UdfMethod]
    public double MyDouble(double d)
    {
        return d * 9;
    }
    

    注意

    IsVolatile プロパティの既定値は false で、特定の UDF メソッドが不揮発性であることを意味します。そのため、不揮発性の UDF メソッドを [UdfMethod] としてマーク付けすれば十分です。このメソッドを [UdfMethod(IsVolatile = false)] とマーク付けする必要はありません。

  3. System.DateTime.Today プロパティを使用して現在の日付を返す別の関数を作成します。この関数は揮発性の UDF メソッドです。以下のコードを Class1 に追加します。

    [UdfMethod(IsVolatile = true)]
    public DateTime ReturnDateTimeToday()
    {
        return (DateTime.Today);
    }      
    

プロジェクトをビルドするには

  1. [ビルド] メニューの [ソリューションのビルド] をクリックします。

  2. プロジェクトを保存したディレクトリで、SampleUdf.dll アセンブリを検索する必要があります。

完全なコード

次のコード例は、ここまでの手順で説明した Class1.cs サンプル ファイル内の完全なコードです。

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Excel.Server.Udf;

namespace SampleUdf
{
    [UdfClass]
    public class Class1
    {
        [UdfMethod]
        public double MyDouble(double d)
        {
            return d * 9;
        }  

        [UdfMethod(IsVolatile = true)]
        public DateTime ReturnDateTimeToday()
        {
            return (DateTime.Today);
        }
    }
}

See Also

タスク

手順 1 : プロジェクトを作成して UDF 参照を追加する

手順 3 : UDF を展開して有効にする

手順 4 : UDF をテストしてセルから呼び出す

[方法] Web サービスを呼び出す UDF を作成する

概念

[ウォークスルー] マネージ コード UDF を開発する

Excel Services UDF とは