業務効率化

VBA:選択範囲を選択言語で一括翻訳マクロ

以前紹介したアクティブシート自動和英訳マクロ(https://gakuhenn.com/vba-sheet-autojnentranslation/)の改良版です。シート上の自動取得範囲と自動和英訳に加え、今マクロではユーザーフォームから選択範囲と翻訳元/先言語を指定できるようにしています。これにより選択したシート上の一部範囲翻訳、和英訳以外の柔軟な翻訳ができます。

記事の内容

・挙動

・コード

・ポイント機能

挙動

UFを開くと、翻訳対象範囲が自動取得され、該当範囲に図形が点滅して表示されます。既定では翻訳元/先言語に日本語と英語が記載されており、この場合はセル値に基づいて自動和英訳がされます。

言語はコンボボックスから選択か、Lngシートに設定したキーワード直接入力することで指定可能です。直接入力時はLngシート設定のワードを指定すると部分一致でセル位置が取得され、値が自動変換されます。

今回は下記範囲に設定し直したとして翻訳実行します。

UFで指定した言語に基づいて翻訳が実行されます。今回はUF上の言語を特に指定しなかったため、自動和英訳がされています。

コード

下記表示が出る場合はご自身のマクロブックに保存されているUF、標準プロシージャ、ユーザーフォームをドラッグアンドドロップしてください。

ポイント機能

・翻訳範囲自動取得と強調

・翻訳元/先言語の指定

・高速化、エラー処理等(Doevents等,Statusbar)

・Gootransl_DefJPandEN関数

翻訳範囲自動取得と強調

UFを開くと値に応じて範囲が自動取得されます。範囲はセルに値が入っている左上と右下を起点として範囲としています。どの範囲かは点滅する図形で強調されます。セルフォントプロパティに設定する方法もありますが、チェックシート上にフォント設定がある際に上書き化されてしまうため図形を配置しています。

UF上の範囲再取得時はInputboxから範囲を選択します。下記のように再選択した場合は、その範囲が対象範囲となり翻訳されます。

再選択した範囲に図形が点滅する

翻訳元/先言語の指定

今マクロでは翻訳先と翻訳元の言語はコンボボックスから選択するか、入力することで指定します。既定では日本語と英語が入っており、この2言語はセル値の日本語割合に応じて自動和英訳されます。和英訳の場合は自動で和文判定し和英訳します(https://gakuhenn.com/vba-sheet-autojnentranslation/)。

ドロップダウンリストからも選択することができますがキーワード入力でも指定可能です。選択できる言語と入力時の置換キーワードはLngシートに記載します。置換キーワードはA列に記載され、スラッシュごとの値がキーワードになっています。コンボボックスの入力値と部分一致した場合に該当せる右B列にある言語表記/ISO言語表記に変換されます。

Lngシート。A列がキーワードで一致するとB列に置き換えられる
Enを入力するとB列の英語/enに置き換えられる

B列はUF表示用の表記で、日本語と、/ ISO-639言語表記が記載されています。スラッシュの後ろがISOの言語コードとなっており、Google翻訳で必要なものとなっているため、変更はできません。

Google翻訳で指定する言語はISO-639に準拠しています。Lngシートには下記に記載されている言語を記載しています。A列のキーワードはご自身で置き換えたいキーワードをスラッシュと共に入力して追加できます。参考:https://cloud.google.com/translate/docs/languages?hl=ja

初期値に戻したい場合(自動和英訳)は両方のコンボボックスの値を削除してください。

高速、エラー処理等(Doevents等,Statusbar)

高速化のため、空欄や数値、2文字以下で英語の場合は処理をスキップしています。それ以外の場合にGootransl_DefJPandEN関数を呼びだし、引数にある翻訳元/先言語を元に翻訳します。一方で1シート全てHttpリクエストしてGetする動作を繰り返しているため、セルが多いと多少時間がかかります。翻訳ループ中には、操作のためにDoeventsを記載し処理中の操作可能にしています。

高速化、Doevents処理:数値等は処理を飛ばす

また、進捗確認のためファイルステータスバーから進捗%を表示させています。これにより実行中操作と進捗確認が可能です。

実行中の進捗確認:左下ステータスバーに進捗%表示

翻訳対象値以外の引数はOptionalとなっており、指定しない場合は自動和英訳がされます。これはワークシートでも使用できることを目的としています。Gootransl_DefJPandEN関数での翻訳元、先言語の引数に指定がない場合は、自動で和英判定され、翻訳されます。今マクロでは、TranslSelectedRngプロシージャで、UF上で指定された言語を指定していますが、指定がない場合のために下記の和英訳自動指定スクリプトを残しています。

和英訳自動指定スクリプト

Gootransl_DefJPandEN関数

マクロ内で使っているGootransl_DefJPandEN関数はPublic Functionとして宣言され、ワークシート上でも利用可能です。引数は翻訳対象言語と、翻訳元、先言語の合計3つです。翻訳対象言語はVariantで宣言しているため、セルの他、テキストでも翻訳可能です。翻訳元、先言語は、Optionalで指定せずにも使用可能です。設定しない場合は和英訳として内部スクリプトの和文安定に基づいて自動和英訳されます。

シート上からセル値のみ指定し引数無しで実行
日本語と判断し、自動で英訳される

-業務効率化