次の方法で共有

機械翻訳を自動化するマクロ(あるいはフリーソフト)

Anonymous
2014-01-31T09:51:16+00:00

Excelの翻訳機能を利用した機械翻訳を自動化したいと考えています。

しかしマクロを組もうと思った時にその為のコードが全く分かりませんでした。

どうしたら良いでしょうか。

■ 状況

大きくても200行(レコード)、20列程度のテーブルがあります。

通常は30~100行(レコード)、10列程度でしょうか。そこまで大量の処理はしません。

このテーブルの中で任意の範囲(仮にD列)に英文が入っています。

このD列の英文を翻訳する事を考えています。(場合によってはシートやブック丸ごとの処理でも構いません。)

一応今回のミソとしては、上記の様に翻訳対象がテーブル状になっている、という点です。

手動で1つ1つ操作するにはレコード数がそこそこ多くて手間がかかってしまいます。

有償の翻訳ソフトを買えば一発で解決するのかもしれませんが、、、出来ればフリーな方法でと考えています。

■ 問題点

今回はさっぱり分からない為、最初からつまずいています。

Application.CommandBars.ExecuteMso "Translate"

↑これで翻訳の機能を呼び出すことはできますが、あくまで呼び出しだけなので

翻訳文をシートに挿入することも、対象セルの制御も出来ていません。

■ 理想

  1. 任意の範囲を選択し、
  2. マクロを実行すると
  3. 任意の範囲の右隣にセルが挿入され
  4. 挿入されたセルに翻訳結果が追記される

といったフローを想定しています。

※機械翻訳のため、選択した範囲に翻訳結果を上書きすることはせず、隣に表示して対比させようと考えています。

しかしこの時、仮にD列を翻訳しようと選択した場合に、E列にもデータが入っていることが多いためE列に新規列を挿入して元E列(挿入後はF列)の上書きを回避しています。

内容は以上になります。どなたかお知恵をお貸しください。。。

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2014-02-17T06:49:05+00:00

こんにちは。

Excelの翻訳機能はリサーチ サービスで、使われているのはMicrosoft Office Research APIのようです。

プロトコルはSOAPなので、VBAからでもMicrosoft Soap Type Libraryあたりを使えば利用できるかもしれませんが、特にこのAPIに拘る必要が無いのであれば、資料が多い「Microsoft Translator」といった他のAPIを利用する方が簡単かもしれません。

言語は異なりますが、Translator APIの場合だと下記ページが参考になるかと思います。

・Microsoft Translator API プログラミング解説

http://www.crystal-creation.com/web-appli/technical-information/web-api/bing/translator/#http-interface

上記ページに記載されているのはPHP用のコードですが、同様の処理はVBAでも可能です。

>> 1. 顧客IDと顧客の秘密をパラメータに含め、認証URLへリクエストする。そしてアクセストークンを取得する。

>> 2. アクセストークンをHTTPヘッダに含め、APIのURLへリクエストする。そして翻訳結果を取得する。

この回答は役に立ちましたか?

2 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

5 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2014-09-24T10:07:58+00:00

    大変失礼しました。返信したものと思い放置してしまいました。

    回答ありがとうございます。

    Microsoft Translator のAPIが用意されているのを確認しました。

    小規模や個人ユースであればこれで十分そうです。

    ただし今回は、1回の処理量は少ないものの回数が多くなる可能性があり、従量課金が恐いので有償ですがそこそこのソフトを購入することで落ち着きました。

    今回の質問では完全に無償であることを念頭に置いていましたが、やはり都合が良すぎた様です。

    VBAでの手法を示していただいた きぬあさ さんのレスを回答と致しました。

    この回答は役に立ちましたか?

    1 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  2. Anonymous
    2014-02-14T10:21:43+00:00

    返信ありがとうございます。

    分からない部分は上記フローで言えば「4. 挿入されたセルに翻訳結果が追記される」の部分です。

    更に限定すると、以下のコードになります。

    1. 選択範囲の値を翻訳機能に渡す。
    2. 翻訳機能で翻訳させる(例えば英→日)
    3. 翻訳結果の戻り値を取得する

    私も丸投げのつもりはありませんでしたが、これで今回の質問の意図が伝わりますでしょうか。

    宜しくお願いします。

    追記:

    >実際にそのコマンドボタンを実行すると、エクセルのシート上ではどのような結果になる(変化があるの)でしょうか?

    「Application.CommandBars.ExecuteMso」ですのでお分かりかと思いますが、

    シート上の変化ではなくアプリケーション上の変化だけでした。

    今回は 「校閲」タブ > 「言語」 > 「翻訳」ボタン をクリックした時と同じ状態になります。

    具体的にはウィンドウ内に「リサーチ」という右ペインが出現し、その中に「翻訳」という項目が表示されます。

    この時、選択セルにテキストが入っているとそのテキストを翻訳します。

    しかしこれは右ペイン内の動作で、翻訳結果をシートへ出力する等はしません。

    このような結果になります。

    この回答は役に立ちましたか?

    1 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  3. Anonymous
    2014-02-06T00:16:49+00:00

    MSDNで運営っぽい人が「VBAはAnswersで聞いて」という趣旨の発言をされていたのでこちらで聞いたのですが、結局MSDNなんですか。

    とりあえず助言ありがとうございます。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2014-02-03T06:20:16+00:00

    junnny さん、こんにちは。

    マイクロソフト コミュニティをご利用いただき、ありがとうございます。

    マクロやフリーソフトを使って挿入されたセルに翻訳結果が反映できるような仕組みを作成されたいのですね。

    VBA については、開発者向けの MSDN に 専門の VBA フォーラムがあります。

    こちらのフォーラムにも質問を投稿してみるともしかすると有益なアドバイスが得られるかもしれません。

    よろしければ活用してみてください。

    Visual Basic for Application (VBA)

    また、フリーソフトについてはコミュニティには該当するカテゴリがないため、よりカテゴリ幅の広い MSN 相談箱も活用してみるとよいと思います。

    MSN 相談箱

    ※ 質問は [デジタルライフ] から [ソフトウェア] を選択されるとよいと思います。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません