【Word VBA】All Caps(大文字設定)された小文字を大文字に変換するWordマクロ

2016年1月14日

Wordでクリップボードの内容を貼り付ける方法の1つに[書式を結合]して貼り付ける機能があります。以前、「Wordの便利な『貼り付け』機能」として紹介しました。この[書式を結合]で文字を貼り付けると、貼り付け先のフォントの種類やサイズに自動的に調整されます。これにより文書の修正が容易になります。

ところが、この[書式を結合]貼り付けを実行すると、[All Caps(大文字の設定・解除)]機能により設定された大文字が小文字に戻ってしまいます。英文契約書では大文字と小文字で用語の意味が異なります。よって、大文字箇所が誤って小文字になると重要情報が欠落することになります。

(通常の貼り付け:元の書式を保持)All Caps で pen が大文字 PEN で表示されています。大文字のまま貼り付けられました。

([書式を結合]して貼り付け)All Caps が解除されてしまい、PENが元の小文字penに戻ってしまいました。

そこで今回のマクロを作りました。このマクロを使うと、[All Caps]機能により大文字表示された「小文字」を「大文字」に変換します。このように変換した大文字であれば、[書式を結合]貼り付けをしても大文字が小文字になるような事故が起こりません。

[書式を結合]貼り付けでは、上付き、下付き、太字、斜体、下線などの基本的な書式が保持され、フォントの種類やサイズなどは貼り付け先の書式に自動調整されます。便利な機能なので、性質を理解して活用しましょう。他人が書いた書類では、この記事のマクロを使用することをお勧めします。

このマクロでできること

メイン文書に書かれた[All Caps]機能により大文字表示された「小文字」を「大文字」に変換します。

マクロの解説

8行目~9行目:検索するときにフォントのプロパティでAll Caps になっている部分を探します。検索する文字列は空欄にしますので、All Caps が設定された任意の文字列が検索されます。

20行目:All Caps が設定された文字が見つかった場合、大文字にします。

マクロ


Sub AllCapsを大文字に変換する()

 Dim myRange As Range

 Set myRange = ActiveDocument.Range(0, 0)

 With myRange.Find
  .Text = ""
  .Font.AllCaps = True
  .Format = True
  .Forward = True
  .Wrap = wdFindStop
  .MatchCase = False
  .MatchByte = False
  .MatchWholeWord = False
  .MatchWildcards = False
  .MatchFuzzy = False
  Do While .Execute = True
   With myRange
    .Case = wdUpperCase
    .Font.AllCaps = False
    .Collapse wdCollapseEnd
   End With
  Loop
 End With

 Set myRange = Nothing

End Sub

関連記事

Wordの便利な『貼り付け』機能

-コード
-,