少し前の事ですがmemoQセミナーの中で、原文ファイル(Word文書)の各文章の下に訳文を入力して、縦並びの対訳形式で納品を希望される場合があるとお聞きしました。以下のような形式です。
このような場合に、memoQで作業する場合どうすればいいか、その解決方法を議論している中で、以下の解決案が提案されました。
【1】原文の各段落をその段落直下に複製する。
【2】上側の段落(複製元の段落)を隠し文字にする。
【3】memoQにインポートする。
【4】memoQで翻訳して、エクスポートする。
【5】ワード文書の隠し文字を、非隠し文字に変換する。
Word文書をmemoQにインポートする場合、memoQのデフォルトの設定では隠し文字がインポートされません。したがって重複した段落の非隠し文字のみがインポートされます(下図参照)。
この状態でmemoQ上で翻訳し、エクスポートすれば以下のような形でエクスポートされます。
原文(隠し文字)[改行] 訳文(非隠し文字)
これで縦並びの対訳形式のファイルが完成します。
このままで納品すると、納品先の設定によっては、隠し文字が非表示の場合があるので、納品前に隠し文字を全て非隠し文字に変換することが好ましいです。
上記【1】および【2】の処理を行うマクロと、【5】の処理を行うマクロ(Word VBA)のコードを以下に公開しておきます。
以下のコードを利用する方法についてはこの動画を参照してください。
Contents
マクロ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が保有します。また、利用に関してはあくまで自己責任でお願いいたします。