少し前の事ですがmemoQセミナーの中で、原文ファイル(Word文書)の各文章の下に訳文を入力して、縦並びの対訳形式で納品を希望される場合があるとお聞きしました。以下のような形式です。

 

 

このような場合に、memoQで作業する場合どうすればいいか、その解決方法を議論している中で、以下の解決案が提案されました。

【1】原文の各段落をその段落直下に複製する。
【2】上側の段落(複製元の段落)を隠し文字にする。
【3】memoQにインポートする。
【4】memoQで翻訳して、エクスポートする。
【5】ワード文書の隠し文字を、非隠し文字に変換する。

Word文書をmemoQにインポートする場合、memoQのデフォルトの設定では隠し文字がインポートされません。したがって重複した段落の隠し文字のみがインポートされます(下図参照)。

この状態でmemoQ上で翻訳し、エクスポートすれば以下のような形でエクスポートされます。

原文(隠し文字)[改行] 訳文(非隠し文字)

これで縦並びの対訳形式のファイルが完成します。

このままで納品すると、納品先の設定によっては、隠し文字が非表示の場合があるので、納品前に隠し文字を全て隠し文字に変換することが好ましいです。

上記【1】および【2】の処理を行うマクロと、【5】の処理を行うマクロ(Word VBA)のコードを以下に公開しておきます。

以下のコードを利用する方法についてはこの動画を参照してください。

マクロ1:各段落を複製して重複させ、重複した段落の片方を隠し文字に変換するマクロ

概要

Word文書の各段落を直下に複製し、尚且、内容が重複する2つの段落のうち上の段落を隠し文字にする。

使い方

コードをコピー・ペーストして実行。ファイル全体に影響を及ぼすのでショートカットキーの割当対象としては不向き。

Source Code 1

以下のコードは、ハイライトや、文字色などの文字書式がない(Plain Text)の場合に適しています。コードが割とスッキリするのでいいかと思います。
ただし段落の文字列を変数に預けているので、文字書式の情報が取れてしまいます。赤文字になってたり、ボールドになってたりする文書には不向きです。

Sub duplicatePara_1()

Dim para As Paragraph Dim strPara As String

‘隠し文字が非表示の場合は、表示させる If ActiveWindow.View.ShowHiddenText = False Then ActiveWindow.View.ShowHiddenText = True

For Each para In ActiveDocument.Range.Paragraphs  
    strPara = para.Range.Text  
    strPara = Left(strPara, Len(strPara) - 1)  
    strPara = "/Source/" & strPara & "</br>"  
    para.Range.InsertBefore strPara
Next
With ActiveDocument.Range.Find
    .Text = "/Source/(?@)\</br\>"
    .Replacement.Font.Hidden = True
    .Replacement.Text = "\1^13"
    .MatchWildcards = True
    .Execute Replace:=wdReplaceAll
End With

End Sub

Source Code 2

ハイライトされた部分、文字色が変わってる部分、下線、上付き文字、下付き文字などの文字書式が含まれる文書には、以下のマクロがいいかと思います。

基本的にコピー・ペーストなので、既に何かをコピーしてクリップボードに預けている場合は、クリップボードの中身がマクロ処理でコピーされたものに書き換えられます。

Sub duplicatePara_2()

Dim para As Paragraph Dim strPara As String Dim SourceTagOpen As String Dim SourceTagClose As String Dim x1 As Long Dim x2 As Long

SourceTagOpen = “【原文】” SourceTagClose = ”【/原文】”

‘隠し文字が非表示の場合は、表示させる If ActiveWindow.View.ShowHiddenText = False Then ActiveWindow.View.ShowHiddenText = True

For Each para In ActiveDocument.Range.Paragraphs para.Range.Select x1 = Selection.Start x2 = Selection.End ActiveDocument.Range(x1, x2 - 1).Select Selection.Copy Selection.Collapse wdCollapseEnd Selection.TypeText SourceTagClose Selection.Paste Next

For Each para In ActiveDocument.Range.Paragraphs para.Range.InsertBefore SourceTagOpen Next

With ActiveDocument.Range.Find
    .Text = "(" & SourceTagOpen & "?@)" & SourceTagClose
    .Replacement.Font.Hidden = True
    .Replacement.Text = "\1^13"
    .MatchWildcards = True
    .Execute Replace:=wdReplaceAll
End With

End Sub

マクロ2:隠し文字を非隠し文字にするマクロ

概要

Word文書内の隠し文字を全て非隠し文字にします。

使い方

コードをコピー・ペーストして実行。ファイル全体に影響を及ぼすのでショートカットキーの割当対象としては不向き。

Source Code 

Sub HiddenCharsToNon_HiddenChars() Dim Hchars As Boolean ‘隠し文字の表示/非表示の状態を格納 Hchars = ActiveWindow.View.ShowHiddenText

If Hchars = False Then ActiveWindow.View.ShowHiddenText = True With ActiveDocument.Range.Find .Font.Hidden = True .Replacement.Font.Hidden = False .Execute Replace:=wdReplaceAll End With

‘隠し文字の表示/非表示の初期状態を復元 ActiveWindow.View.ShowHiddenText = Hchars End Sub

マクロ3(おまけ):隠し文字の表示状態/非表示状態を切り替える

概要

隠し文字が表示状態であれば、非表示状態に切り替え、非表示状態であれば表示状態に切り替えるマクロ

使い方

コードをコピー・ペーストして実行。手軽に実行したいのでショートカットキーの割当がお勧め。

ショートカットキーの割当はここを参照してください。

Source Code 

Sub ToggleHiddenCharViewState() ‘隠し文字の表示・非表示の状態を切り替える With ActiveWindow.View If .ShowHiddenText = False Then .ShowHiddenText = True Else .ShowHiddenText = False End If End With End Sub

上記ソースコードは無料でご利用いただけますが、著作権は株式会社Cygnapiaが保有します。また、利用に関してはあくまで自己責任でお願いいたします。