管理職を小文字にする(Microsoft Word)
ネイサンは、ドキュメント内の役職(「財務マネージャーが提供するもの…」など)を大文字にする個人の問題に頻繁に遭遇します。
彼は、タイトルが文を始めるときに最初の単語に頭文字を付ける正当な理由がない限り、管理職のタイトルの使用をすべてチェックして小文字にするマクロを望んでいます。彼は、30の管理職すべてを入力せずに、2番目の単語が「manager」または「managers」である任意の2単語のフレーズに一致するワイルドカードを設定できるかどうか疑問に思います。
ワイルドカード検索を実行して、探しているインスタンスのタイプを見つけることができます。高度な検索を実行し、[ワイルドカードを使用する]チェックボックスがオンになっていることを確認してから、[検索する文字列]フィールドでこのパターンを使用するだけです。
<[A-Za-z][a-z]{1,}>^32[Mm]anager*>
パターンは、2番目の単語がmanagerまたはmanagersである2つの単語を検索します。両方またはいずれかの単語が大文字であるか、両方の単語が小文字である場合、単語が検索されます。
問題は、ワイルドカードを使用して見つかった単語をすべて小文字に変更できないことです。つまり、見つかったものを手動で検査してから、必要な変更を手動で行う必要があります。これをたまに行う必要がある場合は、[検索と置換]ダイアログボックスがモーダルではないため、それほど面倒ではありません。 (つまり、ドキュメントを編集するときに画面上でダイアログボックスを開いたままにして、ダイアログボックスの[次を検索]をクリックして、次に一致するオカレンスを検索できます。)
このような変更を頻繁に行う必要がある場合、唯一の代替手段は、変更を行うマクロを作成することです。次のマクロは、上記と同じパターンを検索し、役職の大文字と小文字を正しく変更します。マクロは、2つの単語で構成される役職を検索し、2番目の単語は「manager」、「Manager」、「managers」、または「Managers」です。次に、タイトルが文を開始しない限り、単語から大文字を削除します。開始する場合は、2番目の単語から大文字を削除するだけです。
Sub FixManagerCapitalisation() Dim aRange As Range Dim bRange As Range With Selection.Find .ClearFormatting .Text = "<[A-Za-z][a-z]{1,}>^32[Mm]anager*>" .Replacement.Text = "" .Forward = True .Wrap = wdFindAsk .MatchCase = False .MatchWildcards = True Do While .Execute Set aRange = Selection.Range Set bRange = Selection.Range bRange.MoveEnd unit:=wdSentence If bRange.Text <> Selection.Sentences(1).Text Then aRange = LCase(aRange.Words(1).Text) & Trim(aRange.Words(2)) End If aRange = aRange.Words(1) & Trim(LCase(aRange.Words(2).Text)) aRange.Start = aRange.End aRange.Select .ClearFormatting Loop End With End Sub
注:
このページ(または_WordTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_WordTips_は、費用効果の高いMicrosoftWordトレーニングのソースです。
(Microsoft Wordは、世界で最も人気のあるワードプロセッシングソフトウェアです。)このヒント(13080)は、Microsoft Word 2007、2010、2013、2016、2019、およびOffice365のWordに適用されます。