Share via


Excel Services UDF とは

最終更新日: 2010年3月17日

適用対象: SharePoint Server 2010

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

  • Excel に組み込まれていない関数。

  • 組み込み関数へのカスタム実装。

  • 古い、またはサポートされていないデータソース、およびアプリケーション固有のデータ フローへのカスタム データ フィード。

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

Excel Services UDF によって、セルの数式を使用して、マネージ コードで記述され、Microsoft SharePoint Server 2010 に展開されたカスタム関数を呼び出すことができます。UDF を作成すると、以下の操作を実行できます。

  • カスタムの数学関数を呼び出す。

  • カスタム データ ソースからワークシートへデータを取得する。

  • UDF から Web サービスを呼び出す。

マネージ コード UDF を作成する

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

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

必須属性

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

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

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

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

SharePoint Server 2010 をインストールしたコンピューターでは、Microsoft.Office.Excel.Server.Udf.dll のコピーは次の場所にあります。

[drive:]\Program Files\Common Files\Microsoft Shared\web server extensions\14\ISAPI

展開とセキュリティ

展開先の種類

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

UDF アセンブリの識別

Excel Calculation Services が呼び出すアセンブリのフル パスまたは厳密な名前を使用して、UDF アセンブリの ID を公開できます。

たとえば、次のような表記を使用できます。

  • 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 をリセットすると現在のセッションがすべて終了します。

詳細については、「[方法] UDF を有効にする」を参照してください。

詳細については、「Unloading an Application from Memory (英語)」 (https://msdn.microsoft.com/ja-jp/library/ms943779) (英語) を参照してください。

UDF アセンブリ用の既定コード アクセス セキュリティ権限

既定では、UDF アセンブリは完全な信頼が与えられている場合に実行されます。

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

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

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

コード グループの構成や、RequestMinimum および RequestOptional メソッドの詳細については、MSDN の以下の記事を参照してください。

関連項目

タスク

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

[方法] 場所を信頼する

[方法] 例外を検出する

[方法] UDF を有効にする

概念

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

Excel サービスの UDF についてよく寄せられる質問

Excel Services のアーキテクチャ

Excel Services の警告

Excel Services に関する既知の問題とヒント

Excel Services ベスト プラクティス