【VBAリファレンス|実務向け】【Word VBA】翻訳作業を劇的に効率化!指定単語を一括置換して「用語集」を活用するテクニック

スポンサーリンク

皆さん、こんにちは。Excel VBAの講師をしていますが、実務ではWordと連携する作業も非常に多いですよね。今回は、翻訳業務やドキュメント作成で避けて通れない「用語の統一」と「翻訳作業」を、VBAで一気に効率化する方法をご紹介します。

なぜ翻訳作業でVBAが必要なのか

翻訳の際、Wordの「検索と置換」を一つずつ行っていませんか?専門用語が多い文書では、人手による置換はミスを誘発します。特に、前後の文脈や品詞によって訳し分けが必要な場合、標準機能だけでは限界があります。そこで、特定の用語リスト(Excel)を参照し、Word内の単語を自動で翻訳・置き換えするマクロを作成しましょう。

ステップ1:翻訳リストを準備する

まず、Excelで「原文」と「訳文」の2列のリストを作成してください。A列に英語、B列に日本語を入れます。このリストを「用語集」として活用します。

ステップ2:Word VBAで一括変換を実行する

以下のコードは、開いているWord文書内の全文字列に対して、Excelリストにある単語を置換するサンプルです。

実行コードのイメージ

Sub TranslateDocument()
‘ ここでは簡略化のため、配列を使って置換処理を行います
Dim targetWords As Variant
targetWords = Array(“Server”, “Client”, “Database”)
Dim replaceWords As Variant
replaceWords = Array(“サーバー”, “クライアント”, “データベース”)

Dim i As Long
For i = LBound(targetWords) To UBound(targetWords)
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = targetWords(i)
.Replacement.Text = replaceWords(i)
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False ‘大文字小文字を区別しない
.MatchWholeWord = True ‘単語単位で検索
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next i
MsgBox “翻訳・置換が完了しました。”
End Sub

実務で差がつく「ポイント」

このマクロの肝は .MatchWholeWord = True にあります。これを設定しないと、「Server」を翻訳する際に「Serverless」という単語の「Server」部分まで置換されてしまいます。実務では、こうした「誤変換」を防ぐ設定が何よりも重要です。

また、さらに高度な手法として、ExcelのRangeオブジェクトから直接リストを読み込むように改造すれば、翻訳用語集を更新するだけで、マクロのコードを書き換えることなく運用が可能になります。

最後に

翻訳作業は「正確性」と「スピード」の戦いです。VBAを使うことで、人間は「文脈の確認」という本来集中すべきところにリソースを割くことができます。まずは単純な単語置換から始めて、少しずつリストを拡張してみてください。

皆さんの事務作業が、一秒でも早く終わることを願っています。次回は、WordからExcelへ翻訳結果を書き出す手法について触れていきたいと思います。それでは、また!

タイトルとURLをコピーしました