画像サイズの縦横比をそろえる

画像の大きさをドラッグで調整していると、縦と横の倍率が異なった不自然な形になっていることがあります。横サイズをレイアウトに収まるように調整した後から、縦サイズを適当に合わせるような作業をした場合に起こりがちです。このマクロは、そうした縦横比の違いを解消するものです。

グラフィックレイアウト

なお、ここで扱う画像は InlineShape(行内)であることを前提にしています。

すべてのInlineShapeの縦横比をそろえるマクロ

文書内のInlineShapeについて、縦の倍率(ScaleHeightプロパティ)に横の倍率(ScaleWidthプロパティ)の値を設定します。

Sub 画像縦横比の一括補正()
  Dim aIShp As InlineShape
  
  For Each aIShp In ActiveDocument.InlineShapes
    With aIShp
      If .ScaleHeight <> .ScaleWidth Then
        .ScaleHeight = .ScaleWidth
      End If
    End With
  Next aIShp
  Set aIShp = Nothing
End Sub
必要に応じて種別判定も

InlineShapeをすべて処理してしまうことに支障がある場合は、Typeプロパティで種別判定などを加えるとよいでしょう。
例  : If aIShp.Type = wdInlineShapePicture Then ~

Shapeオブジェクトの ScaleHeight、ScaleWidthについて

行内の画像(InlineShapeオブジェクト)のScaleHeight、ScaleWidthはプロパティです。

行内以外の画像(Shapeオブジェクト)のScaleHeight、ScaleWidthはメソッドなのです。つまり、値を設定できますが、現在の値の取得はできません。ややこしいですね。ダイアログボックスでは[倍率]に表示されますが、VBAから取り出せないのです。

タイトルとURLをコピーしました