Excel Services UDF について

ユーザー定義関数 (UDF) は、Excel の計算とデータのインポート機能を拡張するカスタム関数です。 開発者は、以下を提供するカスタム計算パッケージを作成します。

  • Excel に組み込まれていない関数。
  • 組み込み機能のカスタム実装
  • 古いまたはサポートされていないデータ ソースのカスタム データ フィード、およびアプリケーション固有のデータ フロー

ブックを作成するユーザーは、組み込み関数を呼び出すのと同じように、 =MyUdf(A1*3.42)など、セルから UDF を呼び出すことができます。

Excel Services UDF を使用すると、セル内の数式を使用して、マネージド コードで記述され、SharePoint Server に展開されたカスタム関数を呼び出す機能が提供されます。 UDF は次の目的に作成できます。

  • カスタムの数学関数を呼び出す
  • カスタム データ ソースからデータを取得してワークシートに入力する
  • UDF から Web サービスを呼び出す

マネージ コード UDF の作成

Excel Servicesマネージド コード UDF を簡単に作成するには、Visual Studio クラス ライブラリ テンプレートを使用します。 マネージド コード UDF プロジェクトで、Microsoft.Office.Excel.Server.Udf.dllという名前のExcel Services UDF ダイナミック リンク ライブラリ (DLL) を参照する必要があります。

Microsoft.Office.Excel.Server.Udf.dll は Microsoft .NET Framework を使用してコンパイルされています。 Visual Studio を使用してマネージド コード UDF を作成した場合、 Microsoft.Office.Excel.Server.Udf.dll参照することはできません。 古いバージョンの .NET Framework で作成されたアセンブリが、.NET Frameworkで作成されたアセンブリを参照することはできません。

必須の属性

Excel Services UDF クラスとしてクラス内のカスタム関数を使用するには、UDF クラスを Microsoft.Office.Excel.Server.Udf.UdfClass 属性でマークする必要があります。 UDF アセンブリでこの属性でマークされていないクラスは、Excel Calculation Services によって無視されます。 これらは UDF クラスExcel Servicesとは見なされません。

クラス内のカスタム関数を UDF メソッドExcel Services使用するには、UDF メソッドを Microsoft.Office.Excel.Server.Udf.UdfMethod 属性でマークする必要があります。 UDF アセンブリでこの属性でマークされていないメソッドは、UDF メソッドExcel Servicesと見なされないため無視されます。

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

Microsoft.Office.Excel.Server.Udf.dll の場所

SharePoint Server をインストールしたコンピューターには、[drive:]\Program Files\Common Files\Microsoft Shared\Web サーバー拡張機能\16\ISAPI のMicrosoft.Office.Excel.Server.Udf.dllのコピーがあります。

配置とセキュリティ

配置場所の種類

UDF アセンブリは、ローカル ディレクトリ、グローバル アセンブリ キャッシュ、またはネットワーク共有に置くことができます。 ファームのシナリオでは、ローカル ディレクトリのパスはファーム全体で同じである必要があります。

UDF アセンブリの識別

UDF アセンブリの ID は、呼び出す Excel Calculation Services のアセンブリの完全なパスまたは厳密な名前を使用すると公開できます。

たとえば、以下を使用できます。

  • C:\UDFs\MySampleUdf.dll
  • \\MyNetworkServer\UDFs\MySampleUdf.dll
  • CompanyName.Hierarchichal.MyUdfNamespace.MyUdfClassName.dll, Version=1.1.0.0, Culture=en, PublicKeyToken=e8123117d7ba9ae38

UDF アセンブリの有効化

UDF アセンブリは、既定では無効です。

それぞれの Excel Services の信頼できる場所には、AllowUdfs フラグが設定されています。

注:

AllowUdfs フラグは、[Excel Services: 信頼できるファイル保存場所] ページにある [許可されたユーザー定義関数] オプションによって示されます。 [信頼できるファイル保存場所] ページへの移動方法については、「ステップ 3: UDF を展開して有効化する」を参照してください。

AllowUdfs の既定値は false です。 特定の信頼された場所で AllowUdfs 値が false に設定されている場合、その信頼された場所のブックは UDF の呼び出しを許可されません。

特定の信頼できる場所からの UDF の呼び出しを許可するには、 AllowUdfs の値を true に設定します。

この信頼できる場所に UDF の呼び出しがあるブックでセッションが開始したときに AllowUdfs の値が false である場合、UDF の呼び出しは失敗します。 セッションが開始した後に AllowUdfs の値を true に変更しても、UDF の呼び出しは失敗します。 これは、 AllowUdfs フラグの変更は、構成データベースが更新された後、次回のセッションで有効になるためです。

UDF アセンブリの実行を許可する

管理者は、UDF アセンブリを実行する場合、すべての UDF アセンブリを登録してから、信頼できる場所で AllowUdfs フラグを true に設定して、ブックが UDF を呼び出せるようにします。

UDF アセンブリの再読み込み

UDF アセンブリを再読み込みするには iisreset を実行するか、Excel Calculation Services アプリケーション ドメインを再起動します。

注意

IIS をリセットすると現在のセッションがすべて終了します。 詳細は、「How to: Enable UDFs」を参照してください。

UDF アセンブリの既定コード アクセス セキュリティのアクセス許可

既定では、UDF アセンブリを完全信頼で実行します。

UDF アセンブリ用のコード アクセス セキュリティのアクセス許可を制限する

特定の UDF アセンブリを完全な信頼で実行したくない場合は、その UDF アセンブリのコード アクセス セキュリティアクセス許可を明示的に制限する必要があります。 コード グループを構成し、アクセス許可を制限するには、.NET Framework 2.0 構成ツールを使用します。

開発者は、コードで RequestMinimum メソッドと RequestOptional メソッドを使用して、UDF アセンブリが必要以上のアクセス許可を取得しないようにすることもできます。

関連項目