Davidはライターであり、Wordのスペル、スタイル、および文法チェッカーを頻繁に使用します。時々彼は、文法を修正するためのWordの提案が悪いことに気づき、それらを無視することを学びました。彼が問題を抱えていることの1つは、会話の前後に引用符を使用することです。

単語は、Davidが文の終わりまたは始めに引用符を省略したかどうかを認識しません。彼は、数年前にワードプロセッシングプログラムを使用して、ドキュメントに緑色の引用符を残して、引用符がないことを示したことを覚えています。彼は、Wordに欠落している引用符を認識させることができるかどうか疑問に思います。

これをWord内でネイティブに行う方法はありません。その理由はおそらく、見積もりの​​開始位置と終了位置を決定することはほとんど不可能であるという事実に要約されます。たとえば、4つの文を含む段落があり、その段落内のどこかに引用符を配置した場合、Wordは、そのマークが引用符の開始または終了を指定しているかどうかをどのように判断しますか?それが始まりである場合、Wordは、終了マークが文の終わり、2番目の文の終わり、または段落の終わりにあるべきかどうかをどのように知るのでしょうか。 (引用符が終了引用符である場合も同じ難問が発生しますが、配置の複雑さは右ではなく左に広がります。)

この潜在的な混乱と、終了引用符が現在の段落にない可能性があるという事実を組み合わせてください。マークされているダイアログが実際に終了するときに、後の段落の終わりにある可能性があります。

ただし、少なくともいくつかの基本的なチェックを行うマクロを開発することはできます。次のマクロは、ドキュメントの先頭にジャンプして、最初の引用符を検索します。次に、その文字から段落の終わりまですべてを調べます。スマートでない引用符を使用している場合は、基本的に、引用符が偶数であるかどうかを確認します。スマートクォートを使用している場合は、開始クォートごとに終了クォートがあるかどうかを確認します。いずれかの条件がfalseであることが判明した場合、テキストが強調表示されます。

Sub MarkUnevenQuotes()

Dim sRaw As String     Dim iNorm As Integer     Dim iSmart As Integer     Dim J As Long

Selection.HomeKey Unit:=wdStory     Application.ScreenUpdating = False     Selection.Find.ClearFormatting     With Selection.Find         .Text = """"

.Replacement.Text = ""

.Forward = True         .Wrap = wdFindStop         .Format = True         .MatchCase = False         .MatchWholeWord = False         .MatchWildcards = False         .MatchSoundsLike = False         .MatchAllWordForms = False     End With     Selection.Find.Execute

While Selection.Find.Found         Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend         Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend         sRaw = Selection.Text         iNorm = 0         iSmart = 0         For J = 1 To Len(sRaw)

If Mid(sRaw, J, 1) = Chr(34) Then                 If iNorm > 0 Then                     iNorm = iNorm - 1                 Else                     iNorm = iNorm + 1                 End If             End If             If Mid(sRaw, J, 1) = Chr(147) Then                 iSmart = iSmart + 1             End If             If Mid(sRaw, J, 1) = Chr(148) Then                 iSmart = iSmart - 1             End If         Next J         If iNorm > 0 Or iSmart > 0 Then             Selection.Range.HighlightColorIndex = wdYellow         End If         Selection.Collapse Direction:=wdCollapseEnd         Selection.Find.Execute     Wend     Selection.HomeKey Unit:=wdStory     Application.ScreenUpdating = True End Sub

マクロが完了すると、最終的には、視覚的にチェックする必要がある場合に強調表示された一連のテキスト選択が表示されます。ただし、マクロは、最初の引用が発生する段落の外側にある終了引用を検出しません。

注:

このページ(または_WordTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_WordTips_は、費用効果の高いMicrosoftWordトレーニングのソースです。

(Microsoft Wordは、世界で最も人気のあるワードプロセッシングソフトウェアです。)このヒント(13293)は、Microsoft Word 2007、2010、2013、2016、およびOffice365のWordに適用されます。