マクロ(Microsoft Word)での文の始まりの検出
Shelleyは、「providedthat」(「ProvidedThat」、「PROVIDED THAT」など)のすべての大文字の順列を変更するマクロを開発しています
小文字に。これは簡単に実行できますが、フレーズで文が始まる場合は、「P」を大文字にする必要があります。シェリーは、「提供された」などのフレーズが文の先頭にあるかどうかをマクロで判断する方法があるかどうか疑問に思います。
これについては、いくつかの方法があります。まず、検索と置換を使用して、連続した検索と置換を行うことができます。マクロは次のことを実行できます:
。 「提供された」のすべてのバリエーションを小文字に変更します。
。 「.providedthat」(ピリオド、スペース、「provided that」)を検索し、「。providedthat」(適切な大文字)に置き換えます。
。検索を繰り返し、ステップ2で、感嘆符、疑問符、または引用符が後に続く句読点など、他の文末の句読点を使用して置き換えます。
これはマクロで行われるため、プロセスは非常に迅速に進むはずです。
これがその仕事をすることができるものの例です:
Sub ChangeCase1() Dim vFindText As Variant Dim vReplaceText As Variant Dim orng As Range Dim i As Long vFindText = Array(". provided that", _ "! provided that", _ "? provided that", _ "."" provided that", _ "!"" provided that", _ "?"" provided that") vReplaceText = Array(". Provided that", _ "! Provided that", _ "? Provided that", _ "."" Provided that", _ "!"" Provided that", _ "?"" Provided that") ' Set all occurrences to lowercase Set orng = ActiveDocument.Range With orng.Find .ClearFormatting .Replacement.ClearFormatting Do While .Execute(FindText:="provided that", _ Forward:=True, _ Wrap:=wdFindStop) = True orng.Select orng = "provided that" orng.Collapse wdCollapseEnd Loop End With ' Account for end-of-sentence For i = 0 To UBound(vFindText) Set orng = ActiveDocument.Range With orng.Find .ClearFormatting .Replacement.ClearFormatting Do While .Execute(FindText:=vFindText(i), _ MatchCase:=True, _ Forward:=True, _ Wrap:=wdFindStop) = True orng.Select orng = vReplaceText(i) orng.Collapse wdCollapseEnd Loop End With Next End Sub
このアプローチの欠点の1つは、段落の先頭で「提供された」場合に発生することを許可しないことです。このようなインスタンスを考慮に入れるようにマクロを変更することもできますが、より複雑になります。
ただし、使用できる別のアプローチがあります。これは、Caseプロパティのかなり難解な設定wdTitleSentenceに依存しています。この設定では、すべての文字(1つの注目すべき例外を除く)が小文字に変更され、フレーズが文の先頭にある場合は、最初の文字が大文字に変更されます。マクロで使用する方法は次のとおりです。
Sub ChangeCase2() With Selection.Find .ClearFormatting .Wrap = wdFindContinue .Forward = True .Format = True .MatchCase = False .MatchWildcards = False .Text = "provided that" .Execute While .Found Selection.Range.Case = wdLowerCase Selection.Range.Case = wdTitleSentence Selection.Collapse Direction:=wdCollapseEnd .Execute Wend End With End Sub
Whileループ内では、Caseプロパティに2つの割り当てが行われることに注意してください。 1つ目は、選択範囲(見つかったもの)を小文字に設定し、2つ目は文の大文字小文字に設定します。小文字の設定は、「1つの注目すべき例外」を処理するために固有に作成されています
「PROVIDEDthat」というテキストが文の先頭にある場合、wdTitleSentence設定は、何らかの理由で「Providedthat」に変更しません。ただし、「providedthat」(小文字に設定すると「PROVIDEDthat」になります)は「Providedthat」に問題なく変更されます。
注:
このページ(または_WordTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
link:/ wordribbon-WordTipsMacros [ここをクリックして、新しいブラウザタブでその特別なページを開きます]
。
_WordTips_は、費用効果の高いMicrosoftWordトレーニングのソースです。
(Microsoft Wordは、世界で最も人気のあるワードプロセッシングソフトウェアです。)このヒント(13398)は、Microsoft Word 2007、2010、および2013に適用されます。