shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Word】VBAで画像のレイアウトを行内から「上下の文字配置」に変更

WordのVBAで、画像のレイアウトを行内から上下の文字配置に変更するサンプル。

必要になった背景は、Wordの画像は「レイアウト オプション」で行内に設定されていると、画像の複数選択ができないようで一括での更新が手間だったため。

それで、次のような簡易なVBAを作成したが、図のレイアウトを行内から上下の文字配置にしたい場面での備忘録。

shikumika.org

 

図のレイアウトを行内から上下の文字配置に変更する場合のVBAサンプル

「レイアウト オプション」で行内に設定された図のみが対象です。

この実行後は、上下の文字配置になるので、他のコードに行内の図を対象にした箇所があれば、VBA実行の順番等は要注意

Sub 図のレイアウトを行内から上下の文字配置に変更()
    Dim 画像 As Object
    For Each 画像 In ActiveDocument.InlineShapes '行内の図形抽出
        If 画像.Type = wdInlineShapePicture Then '画像データ
            画像.ConvertToShape.WrapFormat.Type = wdWrapTopBottom '上下配置
        End If
    Next 画像
End Sub

 

wdWrapTopBottomの補足

ConvertToShapeで図形の周囲で文字列を折り返す方法をしているので、他のレイアウトにしたい時は以下を参考にする。

 

learn.microsoft.com

 

以上、WordのVBAで、図のレイアウトを行内から上下の文字配置に変更するサンプルでした。

なお、次の事例で活用する場合、「画像サイズの一括更新」のVBAより後の処理にする。上記VBAの処理で行内の図でなくなるためため、対象となる図が存在しないことになります。

shikumika.org

 

Wordの画像は「レイアウト オプション」で行内に設定されているか否かでVBAでの処理方法が違うので注意が必要です。

shikumika.org