人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【翻訳について】解決していただいた方に高ポイントお約束します。

<状況>
翻訳しなければならない和文原稿がワードファイルであります。
その一方で500語程度の和英の専門用語をまとめたglossaryがエクセルであります。

<やりたいこと>
ワードの和文に、glossaryに該当する和文の英語をその該当する和文の後に( )でいれたいと考えています。自動化することは可能でしょうか?




●質問者: IAMTHESUN2
●カテゴリ:ビジネス・経営 学習・教育
✍キーワード:お約束 エクセル ファイル ポイント 原稿
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● 03
●27ポイント

http://www.simple-sys.com/blog/2008/03/29/172/

こちらのブログに書いてある内容でできると思います。

ちょっと勉強しないといけないですが。

◎質問者からの返答

解決に近づいていますが、いまの私には無理みたいです。


2 ● にぎたま
●200ポイント

突貫工事ですけど、やりたいことはこれでできるはずです。

まずは基本的なマクロの形を紹介します。

Sub InsertGloss()

Dim NumGloss As Long

Dim Rep As Variant

Dim RepWith As Variant

Rep = Array("状況", "ワードファイル", "約束", "エクセル")

RepWith = Array("状況 (situation)", "ワードファイル (Word File)", "約束 (promise)", "エクセル (Excel)")

NumGloss = 4

For i = 1 To NumGloss

Selection.Find.ClearFormatting

Selection.Find.Replacement.ClearFormatting

With Selection.Find

.Text = Rep(i)

.Replacement.Text = RepWith(i)

.Forward = True

.Wrap = wdFindContinue

.Format = False

.MatchCase = False

.MatchWholeWord = False

.MatchByte = False

.MatchAllWordForms = False

.MatchSoundsLike = False

.MatchWildcards = False

.MatchFuzzy = False

End With

Selection.Find.Execute Replace:=wdReplaceAll

Next i

End Sub

まずは以下の手順を実行してみてください。

手順1. この質問の質問文、「【翻訳について】解決していただいた方に高ポイント?」から「とは可能でしょうか?」をすべてワードファイルに貼り付けます。

手順2. ツール > マクロ > Visual Basic Editor で VB の画面を表示して、上記のマクロを貼り付けます (マクロについて分からなければ再度質問するかご自分で調べてください)。

手順3. マクロを実行します。

実行結果を見てください。やりたいことはこのイメージでよいですね?

そしたら、次の 2 行をご自分のエクセルファイルの内容に変更する必要があります。

Rep = Array("状況", "ワードファイル", "約束", "エクセル")

RepWith = Array("状況 (situation)", "ワードファイル (Word File)", "約束 (promise)", "エクセル (Excel)")

まず、用語集のエクセルですが、A1 に 状況、B1 に Situation、A2 にワードファイル、B2 に Word File という形式で入力されているとします (形式が違ってもなんとかできると思います)。

C1 に「=concatenate(A1," (",B1,")")」と入力して、最下部までコピーします。これで、「状況 (situation)」という形式のテキストができましたね。

実際に使うのは「原語の A 列」と「原語と訳語併記の C 列」のみです。

A 列だけコピーしてテキストファイルに貼り付けて、改行を "," で置き換えれば、あとは前後に ( と ) を付けるだけでいける感じじゃないですか?

原語訳語併記の方もそれでできるはずです。

最後に NumGloss = 4 を自分の用語集のエントリ数してください。用語が 10 種類あったら、NumGloss = 10 にしてください。

汎用性もへったくれもありませんが、とにかくやりたいことはこれでできるはずです。

何か分からなければ追加で質問ください。

◎質問者からの返答

すばらしい。実行結果からやりたいことであると認識しました。

ただよく理解していないのですが、「次の2行をエクセルの内容に変更

する」とありますが、500項目すべて "状況 (situation)" のように

入力しなければならないのでしょうか?


3 ● Mook
●500ポイント ベストアンサー

sm0k3 さんの提示されたページを参考にしたものですが、Word ファイル内の単語をEXCEL

のデータで置換する例です。


EXCEL のA列に検索語、B列に訳語が並んでいることを想定しています。

(1)上記のシートを引いた状態でALT+F11を押し、

(2)開いたウィンドウで 挿入⇒標準モジュールで開き、

(3)下記をコピーします。

(4)先頭にある翻訳対象のWORDファイルのファイルパスを実際に合わせます。

(5)EXCELに戻ってALT+F8でCATを選んで実行してみてください。

Option Explicit

Sub CAT()
  'オープンするワードのファイル名をパス名付きで入れます
 Const wordFilePath = "C:\test.doc"  '★★★ 実際のファイルパスにしてください。
 
 Dim objWord As Object
 Set objWord = CreateObject("Word.Application")
 
  'Excelの最後の行を求めます
 Dim lastRow As Long
 lastRow = Sheets("Sheet1").Range("A1").End(xlDown).Row
 
  'ワードを開きます。
 objWord.Visible = True
 objWord.Documents.Open wordFilePath
 
 
  '1行目から最後の行まで、繰り返します。
 Dim r As Long
 For r = 1 To lastRow
  '検索するキーワードを設定します。
 objWord.Selection.Find.Text = Sheets("Sheet1").Cells(r, "A").Value
 
  '検索する方向を指定します。
 objWord.Selection.Find.Forward = True
 objWord.Selection.Find.Replacement.Text = Cells(r, "A").Value & "(" & Cells(r, "B").Value & ")"
 objWord.Selection.Find.Replacement.Font.Color = 255
 
  '検索を実行し、全てを置換します。
 objWord.Selection.Find.Execute , , , , , , , , , , wdReplaceAll
 Next
End Sub

不明な点はコメントで補足します。

◎質問者からの返答

こちらもすばらしい。

最後の実行で「中断モードでコードを実行することはできません」

というメッセージがでてきました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ