Excel-DNA はMicrosoft が運営するオープンソースプロジェクトホスティングサイト http://www.codeplex.com/ で公開されているソフトです。この CodePlex にはほかにもたくさん(現在 21019件)のプロジェクトがあり、それらのソフトやライブラリを利用すると、迅速かつ簡単に目的の機能を実現できて便利です。
今回は、Gapi.NET – .NET (C#) wrapper for Google AJAX API をつかって、「翻訳アドイン」 を作ってみます。
プロジェクトのホームからダウンロードして解凍すると GAPI.dll という DLL ができます。
さっそく Translator という名前でプロジェクトを作ります。
(こんな感じ↓) Excel(x64) で動作させるために .NetFramework 4 を選択しました。
プロジェクトフォルダに、今回利用する GAPI.dll をコピーします。
(こんな感じ↓)
ソリューションエクスプローラの「参照設定」を右クリックして「参照の追加」で GAPI.dll を追加します。
(こんな感じ↓)
参照設定したら、「参照設定」に GAPI が表示されますのでこれを右クリックし、プロパティーを開いて出力ディレクトリにコピーを行う設定とします。
(こんな感じ↓)
これで、コーディングの準備が出来ましたので、コードを記述します。
using Gapi.Language; namespace Translator { public class Class1 { public static string ToJapanese(string str) { return Gapi.Language.Translator.Translate(str,Language.Unknown,Language.Japanese); } public static string ToEnglish(string str) { return Gapi.Language.Translator.Translate(str, Language.Unknown, Language.English); } } }
ビルドすると、Translator.dll が生成されますので、同じフォルダに Excel-DNA の配布ファイル(今回は、ExcelDna64.xll と ExcelDna64.dna)をコピーして、それぞれ Translator64 と名前を変更します。
(こんな感じ↓)
Translator64.dna ファイルをエディターで開き、今回作成した Translator.dll を参照するように宣言を記述します。
<DnaLibrary RuntimeVersion="v4.0"> <ExternalLibrary Path="Translator.dll" /> </DnaLibrary>
Excel(x64) を開き、Translator64.xll をドラッグ&ドロップします。アドインを有効にすると作成した関数が有効になっているはずです。
(こんな感じ↓) A1 セルの内容を 、=ToEnglish(A1) で英訳しています。
A3 の英訳を、=ToJapanese(A3) で日本語訳しています。
コードをみるとわかるように、翻訳対象言語を Unkown として言語選択を Google に投げてますので、ターゲット言語は英語に限らず何語でも大丈夫です。
次回は、今回作成したプロジェクトを利用して、関数のヘルプが表示されるようにしてみたいと思います。
では、また(笑)
よー分からんが、すごいと言うことだけは分かりました^^
www
supermabさんのこのTranslator64.xllがほしくて、「.NET C# EXPRESS」で作ってみようとおもったんのですが、VBAしか知らない自分には無理でした。
出来ましたらTranslator64.xllを頂けないでしょうか。
あらさん。
いらっしゃいませ^^
そういえば、この記事にはダウンロードリンクがありませんでしたね。
帰宅したら、プロジェクトを探して、記事中にリンクを作りますので
ダウンロードしてください♪
帰って試してみましたが、#VALUE エラーになりますね~。
Google Translator API が有償化されてアクセスできないようです…orz
Microsoft Translator (Bing API)なら、WindowsLiveID でユーザー登録すれば、個人利用が可能なようです。
Bing API で、書き直さないといけませんね~^^
supermabさん。
さっそくご返信ありがとうございます。
(あまりの速さに驚きです。)
有償化になったのですね、、、ちょっと残念です。
色々情報ありがとうございます!
Excel-DNA は利用しませんが、VBA で同じ機能を実現するコードを、MVP のきぬあさ師匠が書いておられるので、参考にされてはいかがでしょうか?
これ(Google翻訳版)↓
http://www.ka-net.org/blog/?p=1274
とか、これ(Yahoo翻訳版)↓
http://www.ka-net.org/blog/?p=1698
supermabさん。
きぬあさ師匠のリンク紹介ありがとうございます。
参考にしたら、ほぼそのままで翻訳可能な関数がつくれました。
きぬあさ師匠もすごいですが、私がさんざん探しても
見つからなかったXCELでの翻訳プログラムをさくっと
見つけてしまうsupermabさんもすごいです。
ほしいものが作れました。
本当にありがとうございます。
以上
詳しい解説とても参考になります。
Excel-DNA で XLL をつくる(その1)から順番に試して、その3までは問題なく出来たのですが、
その4の通りやったのですが、
ToEnglishやToJapaneseを使うと
#VALUE
が表示されてしまいます。何か解決のヒントなどありませんか?
DNA学習中さん、こんばんわ
前のコメントにあるように、GoogleTranslator有償化によって
このコードからアクセスしても答えが返ってこないために、#Valueエラーとなります。
仕様変更は、WebAPIを利用する上で宿命ですね^^
supermabさん、
早速の回答ありがとうございました。
前のコメント、うっかり見落としていました。
記事はよく読むべきでした。引き続きDNA勉強します。