テキストボックスなどの図形では、中のテキストがあふれて隠れていることがあります。一見して気づきにくいこともあるので、目視で確実に検出するのは困難です。
そうした文字あふれ(オーバーフロー)図形を一括して検出したり対策したりするマクロを紹介します。
図形中のテキストの文字あふれ対策マクロ
Sub 図形のテキストオーバーフローを検出()
f_chkOverFlow ActiveDocument.Shapes
End Sub
Private Sub f_chkOverFlow(ITMS As Object)
Dim oShp As Shape
For Each oShp In ITMS
If oShp.Type = msoGroup Then
f_chkOverFlow oShp.GroupItems
Else
If oShp.TextFrame.Overflowing Then
'オーバーフロー図形の処理
oShp.TextFrame.AutoSize = True
'oShp.Name = "_OVERFLOW" & oShp.Name
End If
End If
Next oShp
End Sub
グループ化された図形に対応するため、再帰処理を使っています。再帰処理については以下のトピックを参照してください。
文字あふれの検出
Wordの図形には、TextFrame.Overflowing
という便利なプロパティがあります。図形の文字あふれを検出できます。
文字あふれの対策
検出した文字あふれの図形の対処として2例を挙げています。
oShp.TextFrame.AutoSize = True
文字あふれを一括解消できる方法です。該当する図形について、[テキストに合わせて図形のサイズを調整する]の指定を有効にします。
文字が収まるように図形のサイズが変化するので、実行後に位置などを適宜調整します。
oShp.Name = "OVERFLOW" & oShp.Name
文字あふれの検出だけする方法です。該当する図形の名前を変えます。
[選択]-[オブジェクトの選択と表示]で表示される一覧上で該当図形を選別でき、個別に文字サイズの変更などの対応ができます。