Excel で、自作の関数を使うのに便利なソフト Excel-DNA を見つけたので使ってみました。
これです→ http://exceldna.codeplex.com/
サイトの下に、このソフトのコンセプトについてこんな記述があります。
MicrosoftのVSTOはOfficeを.NETに統合するうまい方法だよね。でもこれって、VisualStudio の開発者がOfficeを統合したソリューションを開発するためのものなんだ。その点、Excel-DNAは?っていうと、Excel のエンドユーザーを対象にして作ったんだ。VisualStudio の代りにVBA をもっと強力に使えるように!ってね。・・・ぼくも以前は商用のxlwライブラリとか使ってたんだけどね。
ちょっと試してみたら・・・その使いやすさと言ったらもう!さっそく、ご紹介いたします(笑)
サイト右上に緑色のダウンロードボタンがあるのでダウンロードします。
(このボタン↓)
ダウンロードしたら、デスクトップにでも解凍します(インストールなどは必要ありません)。
解凍すると、現在公開されているバージョンだと、 Excel-DNA-0.28 というフォルダが出来、その中にDistribution と Source という2つのフォルダが出来ていると思います。
(こんな感じ↓)
Distribution フォルダを開くと、いくつかのファイルと sample フォルダが出来ているはずです。
(こんな感じ↓)
この中から、ExcelDna.dna と ExcelDna.xll の2つのファイルをデスクトップにコピーします。
(コピーする目的は、この2つのファイルに変更を加えて遊ぶためです)
これで、準備は終わりです。
Excel を開いて、ExcelDna.xll をドラッグ&ドロップ します。
そうすると設定によっては警告が表示されますので、「このセッションに限り有効にします」ボタンを押します。
(こんな感じ↓)
これで、Excel は ExcelDna.dna ファイルに書かれている関数を認識し、有効になっています。
試しに、「数式」タブから「関数の挿入」ボタンをクリックしてみましょう。
関数の種類リストボックスをスクロールすると、一番下に 「ExcelDna」という項目が出来ているはずです。
(こんな感じ↓)
ExcelDna.dna ファイルには1つの関数(AddThem)が定義されており、この関数を選択してみましょう。
この関数は、「選択した2つのセルの数値を加算する」関数なので適当にセルを選択します。
(こんな感じ↓)
選択したセルに適当な数値を入れると、結果が表示されるのが確認できます。
(こんな感じ↓)
さて、Excel を閉じて、ExcelDna.dna ファイルをメモ帳のようなエディタで開いてみましょう。
こんなコードが書かれています↓
<DnaLibrary> <![CDATA[ Public Module Module1 Function AddThem(x, y) AddThem = x + y End Function End Module ]]> </DnaLibrary>
このファイルはテキストファイルで、自由に編集が出来ますので、下記のコードを追加して保存してください。
(こんな感じ↓)
<DnaLibrary> <![CDATA[ Public Module Module1 Function AddThem(x, y) AddThem = x + y End Function // ここから追加 Function MyFunction(str) MyFunction = "Hello! " & str End Function // ここまで End Module ]]>
もういちど Excel を開いて、先ほどと同じように ExcelDna.xll ファイルをドラッグし 「関数の挿入」から
ExcelDna を選ぶと、エディターで追加した関数もちゃんと認識されていますね♪
(こんな感じ↓)
思ったように動作もしてくれているようです。
(こんな感じ↓)
Excel-DNA は、このように簡単に XLL を作ることができます。そして動作に必要なのは、.xll と .dna の2つのファイルだけです。これらのファイルは、ExcelDna.xll → MyFunc.xll 。 ExcelDna.dna → MyFunc.dna といったように自由な名前に変更することが出来ます。(2つのファイルは同じ名前でなければなりませんが)
次回は、.NetFramework を利用した関数を作成し Excel-DNAを使ってXLL 化する方法をご紹介しようと思います。
では、また(笑)
こんばんは。
早速来てみました!
それにしてもDNA、非常に良いものを教えていただきました!!
コレ、ほんとスゴイですね~!
何でこんなに便利なものが日本で知名度低いのかまったくもって謎です。
>早速来てみました!
早速のご来店ありがとうございます^^
>コレ、ほんとスゴイですね~!
師匠が使うと・・・
凄い用途が発掘されそうで楽しみです♪
Excel-DNA 面白そうですね。
ただ、日本語オンリーの私にはチンプンカンプンです。
ExcelDna.dna に書く関数でVBAに出来ないことって・・・・?
早く次回以降を見たいです。
是非連載してください。
>是非連載してください。
ご来店ありがとうございます^^
いろいろな使い方があるので、とりあえず次回は
.NetFramework を使う方法について書いてみようと思ってます。
是非、読んでくださいね♪
初めて試してみました。
動きました・・・・・が
xllをドロップした時何にも反応がないですね。
何か設定あったかしら?
>何か設定あったかしら?
たぶん・・・
セキュリティーの設定が default と違っているんぢゃないか(?)
と思います。