秀丸の弱点(コメント機能) | 秀丸マクロ, Word VBA, or the like

秀丸の弱点(コメント機能)

秀丸の弱点』という記事で挙げた、Wordにあって秀丸に無い機能に、

コメント挿入機能があります。

これについては、非常に便利な機能なのですが、一切使わないという手も考えられます。

というのも、

自分が過去にまだWordメインで作業していたときに、

コメントを大量に挿入して英訳を提出したことがあります。

しかし、チェック担当者から原稿が戻ってきたときに、

コメントの殆どに何も返事が書かれていなかったことがありました。

『・・・と解釈しました。』

という感じのコメントについては、何も返事が無いと言うことは問題ないということと考えられるのですが、

『・・・でしょうか、それとも***でしょうか』という問い合わせについて何も回答がないと見ていないということになります。

担当者に確認したところ、そもそもWordにそのような機能があるとは知らず、さらにWordのコメントが表示されない設定になっていたそうです。

で、

そんな表示されないかもしれない形式でコメントを入れてくるのは不適切と叱られてしまいました。

こっちからすれば、『え~~、業界じゃ誰でも使ってそうなコメント機能を知らないほうが・・・』と、


いささか理不尽だなとおもいましたが、確かにこの担当者の言う事にも一理あるのです。


コメント挿入機能を知っていても、表示設定が何らかの原因でたまたまOFFになっている可能性もあります。

そういう事故の可能性を減らすためにも、今では多少読みにくくはなりますが、コメント挿入機能を使わずに、

<!>本文本文本文本文</!>/*コメントコメントコメント*/本文本文本文本文』

というふうにしています。


とは言え、ねぇ~・・

これでは多少見辛いという難点があり、Wordのコメント機能は何かと便利なのでやはり捨てがたいものです。

なので以下の様なマクロを組み立ててみました。


Sub Wordコメント⇔Textコメント()
'Wordコメントが入っている場合は、テキストベースのコメントに、
'テキストベースのコメントがある場合は、Wordコメントに変換する。


Application.ScreenUpdating = False
If ActiveDocument.Comments.Count = 0 Then
TxtComToWrdCom
Else
WrdComToTxtCom
End If
End Sub

Private Sub WrdComToTxtCom()
'Wordコメントを、テキストベースのコメントに変換

Dim ComS As Long
Dim ComE As Long
Dim ComStr As String
Dim ScStr As String
Dim myRem As Comment

For Each myRem In ActiveDocument.Comments
ComS = myRem.Scope.Start
ComE = myRem.Scope.End
ScStr = myRem.Scope.Text
ComStr = myRem.Range.Text
myRem.Delete
ActiveDocument.Range(ComS, ComE).Select
If Right(Selection.Range.Text, 1) = vbCr Then
Selection.MoveLeft wdCharacter, 1, Extend:=wdExtend
ScStr = Left(ScStr, Len(ScStr) - 1)
End If
With Selection
.Font.Color = wdColorBlue
.Font.Bold = True
.TypeText "<!>" & ScStr & "</!>/*" & ComStr & "*/"
End With
Next

End Sub

Private Sub TxtComToWrdCom()
'テキストベースのコメントをWordコメントに変換


Dim buf As String
Dim strArray As Variant
Dim x1 As Long
Dim x2 As Long
Dim escape As Boolean
escape = False
With Selection.Find
.Text = "\<\!\>(?@)\</\!\>/\*(?@)\*/"
.Replacement.Text = "\1"
.Wrap = wdFindContinue
.MatchFuzzy = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.MatchWildcards = True
End With

Do While escape = False
Selection.Find.Execute
If Selection.Find.Found = True Then
buf = Selection.Range.Text
strArray = Split(buf, "</!>/*")
x1 = Selection.Start
x2 = Selection.Start + Len(strArray(0)) - 3
Selection.Find.Execute Replace:=wdReplaceOne

ActiveDocument.Range(x1, x2).Select
With Selection
.Font.Color = wdColorAutomatic
.Font.Bold = False
.Comments.Add Range:=Selection.Range
End With

Selection.TypeText Left(strArray(1), Len(strArray(1)) - 2)
ActiveWindow.ActivePane.Close
Else
escape = True
End If
Loop

With Selection.Find
.Text = ""
.MatchWildcards = False
End With
End Sub



コメント挿入機能を使ってコメントが挿入されている状態で、

上記マクロの、「Wordコメント⇔Textコメント」を実行すると、

Wordのコメント機能によるコメントが全てテキストベースのコメントに変換されます。

また、テキストベースのコメントのみの状態で、同じマクロを実行すると、

Wordのコメント機能によるコメントに変換してくれます。

絵にするとこんな感じです。

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓


$秀丸マクロ、ワードマクロ、翻訳ネタ、or the like-WordComment

上の状態から下の状態あるいは、下の状態から上の状態へと行き来することが出来ます。

$秀丸マクロ、ワードマクロ、翻訳ネタ、or the like-TextComment

同じマクロが入ったファイルをダウンロード出来るようにしています。

良かったら試してみてください。

解凍して、ファイル開いて、メニューバーの横にある、「Wordコメント⇔Textコメント」というボタンをくりっくしてください。

Word2007だと、リボンの「アドイン」タブに同じボタンが出てくると思います。

こないだの記事で載せた、書式や特殊文字を処理するマクロに組み合わせて使っていただいても構いません。

このブログでもそのうち組み合わせたものを載せますね。