業務効率化

VBA:アクティブシート一括和英訳マクロ

アクティブなシートを一括翻訳するVBAマクロです。シート上のセル値に基づき範囲を自動取得し、和文割合に応じて和英訳がされます。誤実行等防止のため、実行前は翻訳前のシートを複製や、スクロールバーで進捗状況確認ができます。

記事の内容

・挙動

・コード

・ポイント機能、機能追加マクロhttps://gakuhenn.com/vba-selectedrng-translate-by-selectedlung/

挙動

実行を押すとアクティブシートのセル値に基づいて、翻訳対象範囲が自動取得され選択されます。はいを押すと、自動で和英訳が実行され、翻訳前のシートがバックアップとして作成されます。

実行結果:対象範囲にあるセル値の値が和英訳される。数値や空欄は無視されます。

翻訳前のシートがOriginalシートとして複製。誤実行による翻訳で元シートが消えることを防ぐ。

コード

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

ポイント機能

・選択範囲の自動取得

・自動和英訳関数

・Doevents等による進捗確認

選択範囲の自動取得

findメソッドを使用し、シート上の値が入っているセルがある場所を取得します。範囲指定時は値が入っている最後の左上と右下を取得判定しますが、今回のマクロでは左上をA1に固定し、値が入っているセルで最も右下にあるセルを取得し翻訳範囲としています。取得された範囲は実行前にSelectされ、灰色で把握できます。下記のようなシートで実行するとsuccessまでのセルを範囲として取得します。

左上セルを固定しているため、A1に値が入っていなくても選択されます。なお、空欄の場合は処理を飛ばす処理をしているため、動作には問題ありません。なお、左上も右下同様に動的に取得したい場合は、下記部分のコメントアウトを変更し、Rangeの第一引数をCells(FirstRow,irstColl)のように変更してください。

自動和英訳

他記事で紹介した自動和英訳マクロ関数を一部修正し、利用しています。引数に言語指定がない場合は、セル値に基づいて和文量を判定します。既定では4割以上の和文(句読点等含む)がある場合は、和文と判断しています。

呼び出し時、第二引数に割合を0.4と記載

第二引数は文字列で小数点第一数値を指定します。ここでの値をIsJPText判断関数での判断基準としています。なおClngで数値変換をしようとしても型変更がうまくいきません。その際はCDblメソッドを使用し、引数で指定された小数点数値の文字列型を計算に使用できるようにします。

CDbl(JpDefRatio零点数値で記載)で記載することで割合判断ができる

使っている関数はprivateとして宣言していませんので、ワークシート上でも関数として利用できます。

引数はVariant等を使用しているため、セルを選択して翻訳する関数としても利用できます。現状は公式のTranslate関数が存在しますが、プランによっては使用できない場合などで利用できます。

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

Doevents等による進捗確認

1シート全ての値をHttpリクエストしてGetする動作を繰り返しているため、セルが多いと多少時間がかかります。翻訳ループ中には、操作のためにDoeventsを記載しており、ファイルステータスバーから進捗%を表示させています。これにより実行中操作と進捗確認が可能です。

機能追加マクロ

今マクロは範囲と言語がすべて自動で設定されています。和英訳の場合十分ですが、柔軟な一括翻訳のため、下記マクロで範囲変更、翻訳元/先言語も指定できるようにしました。

-業務効率化