エクセルのワークシート関数をC#で作成するには
調べたことをするすると忘れてしまうので、メモしておきます。
マイクロソフト的にはC/C++で作るのを推奨しているみたいで、C#で作る方法は見つからなかった。
ただ、エクセルのVBAを使えばC#で作ったメソッド関数を間接的に呼び出して、ワークシート関数のように使うことはできるようだ。
ワークシート関数というのは、エクセルのセルに設定できる計算式で使える関数のこと。A列の2行目から10行目までの合計値がほしいときはSUM関数を使って、以下のように書く。
=SUM(A2:A10)
ここでC#で作った自作の関数を使いたい。たとえば、
=MySum(A2:A10)
のように。
まず手順として、エクセルからC#のメソッドを参照できるようにするには、エクセルアドインのプロジェクトを作って、そこにクラスを追加してメソッドを作り、エクセルから参照できるように設定する。
他の Office ソリューションからのアプリケーション レベルのアドインのコードの呼び出し
次にエクセルのVBAで、エクセルアドインのオブジェクトを参照してメソッドを呼び出すMySum関数を定義する。
VBAで定義した関数はワークシート関数として参照できるので、これで目的達成。
あと、エクセルVBAはファイルごとに保存されるので、テンプレートして起動時に自動的に読み込むようにしておけばよいかと。
*
C#で全部できないのは残念だが、事情があるのだろうなあ。VisualStudio2005のヘルプにはC#のメソッドを直接呼び出す手順が説明されているのに、次の2008では消えている。
方法 : Excel 用のオートメーション アドインとしてマネージ コードを使用する
マイクロソフト的にはC/C++で作るのを推奨しているみたいで、C#で作る方法は見つからなかった。
ただ、エクセルのVBAを使えばC#で作ったメソッド関数を間接的に呼び出して、ワークシート関数のように使うことはできるようだ。
ワークシート関数というのは、エクセルのセルに設定できる計算式で使える関数のこと。A列の2行目から10行目までの合計値がほしいときはSUM関数を使って、以下のように書く。
=SUM(A2:A10)
ここでC#で作った自作の関数を使いたい。たとえば、
=MySum(A2:A10)
のように。
まず手順として、エクセルからC#のメソッドを参照できるようにするには、エクセルアドインのプロジェクトを作って、そこにクラスを追加してメソッドを作り、エクセルから参照できるように設定する。
他の Office ソリューションからのアプリケーション レベルのアドインのコードの呼び出し
次にエクセルのVBAで、エクセルアドインのオブジェクトを参照してメソッドを呼び出すMySum関数を定義する。
VBAで定義した関数はワークシート関数として参照できるので、これで目的達成。
あと、エクセルVBAはファイルごとに保存されるので、テンプレートして起動時に自動的に読み込むようにしておけばよいかと。
*
C#で全部できないのは残念だが、事情があるのだろうなあ。VisualStudio2005のヘルプにはC#のメソッドを直接呼び出す手順が説明されているのに、次の2008では消えている。
方法 : Excel 用のオートメーション アドインとしてマネージ コードを使用する
コメント
コメントを投稿