Excel-DNAの導入、最初の設定メモ、VisualStudioでユーザー定義関数、エクセルアドイン
2019/10/19追記
このときだけしか使っていない
なんかエクセル2007だと、あれも対応していない、これも対応していないとかでてくるからいまいち、2007より新しいエクセルを使いたい
追記ここまで
面白そうなのを見つけた
Excel-DNAっていうの
よくわかっていないけど動いたのでメモ
VisualStudioを使って
エクセルのマクロを作ってアドインで連携
ユーザー定義関数を作ってアドインで管理
うまく表現できないけどマクロを書くのにVisualStudioを使えるようなの
この辺りの解説を見て何とか準備ができたので
その準備のメモ
Excel-DNA - Home
Excel-DNAを公開している本家からダウンロード
ExcelDna-0.32.zipをダウンロードする
必要なファイルをアドインフォルダにコピーする
ExcelDna-0.32.zipを解凍して
その中にあるDistributionフォルダの中にある
ExcelDna.dnaとExcelDna.xllを
エクセルのアドインフォルダにコピーする
64bit版のエクセルを使っている場合はそれぞれ64が付いているファイルで
OSが64bitでもエクセルが32bitなら無印のファイルってことかな
アドインフォルダの場所は
C:\Users\waten\AppData\Roaming\Microsoft\AddIns
watenのところはユーザー名
ユーザー名の確認は
AppDataフォルダは隠しフォルダになっていて見えないけど
表示設定の隠しフォルダにチェックを入れると見えるようになる
VisualStudioの準備
新しいプロジェクトからクラスライブラリを選択
名前はわかりやすいのをつける
今回はExcelDnaWatenにした
OK押すと
この画面
必要なファイルを参照設定する
ソリューションエクスプローラーを開いて
プロジェクト名を右クリックして
追加→参照
この画面で参照を押して
さっき解凍したExcelDna-0.32.zipのDistributionフォルダの中にある
ExcelDna.Integration.dllを選択して追加ボタン押すと
この画面に戻る、チェックが入っているの確認してOK
これで参照設定完了
参照設定したのを使いやすいようにImportsする
1行目に
Imports ExcelDna.Integration
これでVisualStudioの準備ができた
関数を書く
Public Module Module1ってのはわかっていないコピペしただけ、おまじない
End Module、これもおまじない
Public Class Class1
End Class
これも要らなそうだけど、害がなさそうなのでそのまま
関数は
Function Kakezan(x, y)
Return x * y
End Function
この3行
名前がKakezanって名前の関数にした
受け取ったxとy、2つの値を掛け算した値を返す関数
書いたらビルド…の前に
構成?をDebugからReleaseに変更してから
ビルド!
ビルドに成功すると下にある出力画面に
1 正常終了の表示
------ ビルド開始: プロジェクト:ExcelDnaWaten, 構成:Release Any CPU ------
ExcelDnaWaten -> c:\Users\waten\Documents\Visual Studio 2013\Projects\ExcelDnaWaten\ExcelDnaWaten\bin\Release\ExcelDnaWaten.dll
========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========
できあがったファイルの場所はオレンジ色のところにあるので
これをエクセルのアドインフォルダにコピーする
できあがったファイル(Excelgogowaten.dll)を
アドインフォルダにコピー(移動でも同じ)する
アドインフォルダのExcelDna.dnaの中を書き換える
コピーしたExcelDna.dnaをテキストエディタで開いて
2行目から19行目を
<ExternalLibrary Path="ExcelDnaWaten.dll" />
これに書き換える
ExcelDnaWaten.dll
のところはVisualStudioでビルドして作成したファイル名にする
上書き保存して閉じる
エクセルのアドインとして導入する
アドインの導入方法は
このへんみて
アドインの名前はExceldnaになっている
この名前を変えたいときは
ExcelDna.dnaとExcelDna.xllを変えればいいみたい
チェックを入れてOKでさっき書いたKakezanの関数が使えるようになっている
=kaを打った時点で候補として出てくる
2つの値、もしくは数値の入ったセルをを指定して決定すると
できた!
ここに説明を入れるのとかもできるみたい
他にも関数を書いてみる
VisualStudioに戻って
Excel-DNA で XLL をつくる(その6) | supermab's blog
コピー
ここを参照(丸パクリ)して
受け取った値が素数かどうかの判定を返す関数を書く
ピンクの四角のところが書き加えた関数ISPRIME
書く場所はModule Module1としたところの中でいいみたい
書いたらビルドしてできあがったファイルを
アドインフォルダにコピーするんだけど
そのまま上書きしようとしてもエラーになるので
エクセルのアドインの設定でExceldnaのチェックを外してOKしてから
ビルドしたファイルExcelgogowaten.dllを上書きする
上書きできたらチェックを入れる
めんどくさいけどチェックを入れている間はエクセルが
Excelgogowaten.dllを使用中ってことで上書きできないみたい
ファイルを置き換えるで上書きコピー
再びチェックを入れてOK
候補にも出てくる
できたー
同じ素数判定の関数だけどBooleanじゃなくて文字列を返す関数
渡すのが数値とかの値だけじゃなくてRangeとかセルそのものの受け渡しもできるのかしら