現在、Wordで動く翻訳チェックソフト「色deチェック」の修正をしています。
最近ユーザーさんから特許明細書の対訳表を作成に関していただいた要望に、以下のようなものがありました。
段落番号にコメントが挿入されているとその段落を対訳表に抜き出せないので修正をして欲しい、とのことでした。
そうなのです。コメントが挿入されている箇所については、ワイルドカードでの検索ができなくなります。
参考:【Word】ワイルドカードを使う場合の注意点(その2)
対訳表を作成する際にワイルドカードを用いて段落番号を検索しています。そおため、コメントが挿入された段落番号を検索できないためにその段落を抜き出せないという不具合になっておりました。
次のバージョンで修正されます。
そのときに使ったのが今回紹介するマクロです。
「コメントが邪魔だけどとりあえず残しておきたい!」というようなときに使えるかも知れません。
<目次>
このマクロでできること
以下のようにコメントが挿入されています。
移動したいコメントを選択します。
この状態でマクロを実行すると以下のように次の段落の先頭の1文字目に全てのコメントが移動します。
コメントへの返信も移動していますが、返信先との関係は崩れてしまいます。
マクロの解説
特定の範囲内のコメントの指定は、For Each Nextステートメントではなく、For Nextステートメント を使いましょう(15行目~21行目)。
参考:【コード】選択範囲内のコメントを削除するWordマクロ
コメントの移動先は、カーソルがある段落の次の段落です。
13行目に示したとおり、Selection.Paragraphs.Last.Next.Range とするとRangeオブジェクトとして指定できます。
マクロ
Sub 選択範囲内のコメントを次の段落の先頭に移動する() Dim myComment As Comment Dim myRange As Range Dim i As Integer Dim iMax As Integer If Selection.Comments.Count = 0 Then Exit Sub End If iMax = Selection.Comments.Count Set myRange = Selection.Paragraphs.Last.Next.Range For i = iMax To 1 Step -1 Set myComment = Selection.Comments(i) With myRange.Characters .First.Comments.Add .First, myComment.Scope.Text & ": " & myComment.Range.Text End With myComment.Delete Next Set myRange = Nothing Set myComment = Nothing End Sub